Skip to content

Latest commit

ย 

History

History
143 lines (116 loc) ยท 8.02 KB

File metadata and controls

143 lines (116 loc) ยท 8.02 KB

egjs-flicking ๋ชจ๋…ธ๋ ˆํฌ

egjs-flicking์€ Naver๊ฐ€ ๊ฐœ๋ฐœํ•˜๋Š” JavaScript ์บ๋Ÿฌ์…€/์Šฌ๋ผ์ด๋” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋Š” pnpm ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ๋ชจ๋…ธ๋ ˆํฌ๋‹ค.

ํŒจํ‚ค์ง€ ๊ตฌ์กฐ

ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ ์—ญํ• 
@egjs/flicking packages/flicking/ ์ฝ”์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (Vanilla JS)
@egjs/flicking-plugins packages/flicking-plugins/ ํ”Œ๋Ÿฌ๊ทธ์ธ (AutoPlay, Arrow ๋“ฑ)
@egjs/react-flicking packages/react-flicking/ React ๋ž˜ํผ
@egjs/vue3-flicking packages/vue3-flicking/ Vue 3 ๋ž˜ํผ
@test/unit ์™ธ packages/test-flicking/ ์ „์ฒด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ (unit / plugins / cfc)
docs packages/docs/ Docusaurus ๋ฌธ์„œ ์‚ฌ์ดํŠธ
api-docs-generator packages/api-docs-generator/ API ๋ฌธ์„œ ์ž๋™ ์ƒ์„ฑ (TypeScript โ†’ MDX)

ํ•ต์‹ฌ ๊ทœ์น™

dev/ ํŒŒ์ผ ์ˆ˜์ •

  • dev/{subdir}/App.* ํ•˜๋‚˜๋งŒ ๊ต์ฒดํ•œ๋‹ค. ๋ชจ๋“  dev/ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ(scratch, basic-sample ๋“ฑ)์˜ index.html, main.*์€ ์ ˆ๋Œ€ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • dev ํŒŒ์ผ์—์„œ๋Š” @egjs/ ๋Œ€์‹  @dev/ alias๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Import Alias (dev ํŒŒ์ผ ์ „์šฉ)

alias ๋Œ€์ƒ
@dev/flicking @egjs/flicking ์ฝ”์–ด
@dev/react-flicking React ๋ž˜ํผ
@dev/vue3-flicking Vue 3 ๋ž˜ํผ
@dev/plugins ํ”Œ๋Ÿฌ๊ทธ์ธ
@dev/flicking-css ์ฝ”์–ด CSS (์‚ฌ์ „ ๋นŒ๋“œ ๋ถˆํ•„์š”, HMR ์ง€์›)
@dev/plugins-css ํ”Œ๋Ÿฌ๊ทธ์ธ CSS

ํ…Œ์ŠคํŠธ

  • shared/pre-setup.ts๋Š” setupFiles ๋ฐฐ์—ด ์ฒซ ๋ฒˆ์งธ์— ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด Axes๊ฐ€ ์ž˜๋ชป๋œ Input์„ ์„ ํƒํ•œ๋‹ค.
  • CSS ๋ ˆ์ด์•„์›ƒ(offsetWidth ๋“ฑ)์ด ํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ๋Š” unit(Vitest Browser Mode)์— ์ž‘์„ฑํ•œ๋‹ค. jsdom ํ™˜๊ฒฝ(plugins, cfc)์—์„œ๋Š” ์‹ค์ œ ํฌ๊ธฐ ๊ณ„์‚ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฌธ์„œ

  • llms.txt์˜ ๋งํฌ๋Š” HTML(/docs/...)์ด ์•„๋‹Œ /llm-docs/.../.md๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ๋ฐ๋ชจ ์ฝ”๋“œ๋Š” TSX ๋‚ด ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์ด ์•„๋‹Œ ๋ณ„๋„ ํŒŒ์ผ(react.jsx, vue.vue, vanilla.js)๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • API ์ž๋™ ์ƒ์„ฑ ํŒŒ์ผ(docs/api/, blog/release-*.md, static/llm-docs/)์€ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด

# ๊ฐœ๋ฐœ ์„œ๋ฒ„ (HMR ์ง€์›)
pnpm dev:all          # ๋ชจ๋“  ํŒจํ‚ค์ง€ ๋™์‹œ ์‹คํ–‰ (ํฌํŠธ 3000~3003)
pnpm dev:flicking     # flicking๋งŒ (3000)
pnpm dev:react        # react-flicking (3001)
pnpm dev:vue          # vue3-flicking (3002)
pnpm dev:plugins      # flicking-plugins (3003)
pnpm demos:local      # ๋ฌธ์„œ ๋ฐ๋ชจ๋ฅผ ๋กœ์ปฌ ์ฝ”์–ด๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฐค๋Ÿฌ๋ฆฌ (3010, โ†’ DEV_GUIDE.md)

# ํ…Œ์ŠคํŠธ
pnpm test             # unit ํ…Œ์ŠคํŠธ (Vitest Browser Mode + Playwright)
pnpm test:plugins     # plugins ํ…Œ์ŠคํŠธ (jsdom)
pnpm test:cfc         # Cross-Framework ํ…Œ์ŠคํŠธ (jsdom)
pnpm test:e2e         # E2E ํ…Œ์ŠคํŠธ (Playwright + ๋ฐ๋ชจ ๊ธฐ๋ฐ˜)
pnpm test:all         # ์ „์ฒด ์ˆœ์ฐจ ์‹คํ–‰ (unit + plugins + cfc)

# ์ฝ”๋“œ ํ’ˆ์งˆ (Biome)
pnpm lint             # lint + format ๊ฒ€์‚ฌ
pnpm lint:fix         # ์ž๋™ ์ˆ˜์ •
pnpm format           # ํฌ๋งทํŒ…๋งŒ ์ ์šฉ

# ํผ๋ธ”๋ฆฌ์‹œ (Publish: npm ํŒจํ‚ค์ง€ ๋ฐฐํฌ, ์ƒ์„ธ โ†’ dev-guide/PUBLISH_GUIDE.md)
pnpm publish:version          # ๋ž˜ํผ ๋ฒ„์ „ ๋™๊ธฐํ™” [patch|minor|major]
pnpm publish:build            # ์ „์ฒด ๋นŒ๋“œ
pnpm publish:stable           # ์ „์ฒด ๋นŒ๋“œ + ์ •์‹ ํผ๋ธ”๋ฆฌ์‹œ
pnpm publish:stable:{pkg}     # ๊ฐœ๋ณ„ ๋นŒ๋“œ + ์ •์‹ ํผ๋ธ”๋ฆฌ์‹œ (flicking|react|vue|plugins)
pnpm publish:beta             # ์ „์ฒด ๋นŒ๋“œ + ๋ฒ ํƒ€ ํผ๋ธ”๋ฆฌ์‹œ
pnpm publish:beta:{pkg}       # ๊ฐœ๋ณ„ ๋นŒ๋“œ + ๋ฒ ํƒ€ ํผ๋ธ”๋ฆฌ์‹œ

# ๋ฆด๋ฆฌ์ฆˆ (Release: changelog + commit + tag + push)
pnpm release          # ์ „์ฒด ๋ฆด๋ฆฌ์ฆˆ ํŒŒ์ดํ”„๋ผ์ธ
pnpm release:dry-run  # ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ช…๋ น์–ด๋งŒ ์ถœ๋ ฅ

# ๋ฌธ์„œ ๋ฐฐํฌ (Deploy: ๋ฌธ์„œ ์‚ฌ์ดํŠธ)
pnpm docs:build       # API ๋ฌธ์„œ ์ƒ์„ฑ + Docusaurus ๋นŒ๋“œ
pnpm docs:deploy      # ๋นŒ๋“œ + gh-pages ๋ฐฐํฌ (upstream)
pnpm api-docs:generate && pnpm api-docs:docusaurus  # API ๋ฌธ์„œ๋งŒ ์žฌ์ƒ์„ฑ

์ด์Šˆ ์žฌํ˜„ (๋น ๋ฅธ ์ฐธ์กฐ)

์ด์Šˆ ์žฌํ˜„ ์š”์ฒญ ์‹œ scratch ํŒจํ„ด์„ ์‚ฌ์šฉํ•œ๋‹ค:

๋Œ€์ƒ App ํŒŒ์ผ ํฌํŠธ ๋ช…๋ น์–ด
์ฝ”์–ด (Vanilla) packages/flicking/dev/scratch/App.js 3000 pnpm dev:flicking
React packages/react-flicking/dev/scratch/App.tsx 3001 pnpm dev:react
Vue 3 packages/vue3-flicking/dev/scratch/App.vue 3002 pnpm dev:vue
ํ”Œ๋Ÿฌ๊ทธ์ธ packages/flicking-plugins/dev/scratch/App.js 3003 pnpm dev:plugins

ํ™•์ธ URL: http://localhost:{ํฌํŠธ}/scratch/

๊ทœ์น™: App ํŒŒ์ผ ์ƒ๋‹จ์— ์ด์Šˆ ๋ฒˆํ˜ธ ์ฃผ์„ ๊ธฐ๋ก, ์Šคํƒ€์ผ์€ ์ธ๋ผ์ธ์œผ๋กœ ์ž‘์„ฑ. ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ํ…œํ”Œ๋ฆฟ โ†’ dev-guide/ISSUE_REPRODUCTION_GUIDE.md

๊ฐ€์ด๋“œ ์ธ๋ฑ์Šค

๊ฐ€์ด๋“œ ๊ฒฝ๋กœ ์—ญํ•  ์—…๋ฐ์ดํŠธ ์‹œ์ 
๊ฐœ๋ฐœ ํ™˜๊ฒฝ dev-guide/DEV_GUIDE.md dev ์„œ๋ฒ„, HMR, alias, ๋นŒ๋“œ ๊ฒ€์ฆ ๋ชจ๋“œ, ํƒ€์ž… ์ง€์› dev ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ ์‹œ
์ด์Šˆ ์žฌํ˜„ dev-guide/ISSUE_REPRODUCTION_GUIDE.md scratch ํŒจํ„ด ์›Œํฌํ”Œ๋กœ์šฐ, ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ํ…œํ”Œ๋ฆฟ scratch ํŒจํ„ด ๋ณ€๊ฒฝ ์‹œ
ํ…Œ์ŠคํŠธ dev-guide/TEST_GUIDE.md Vitest ์„ค์ •, unit/plugins/cfc ๊ตฌ์กฐ, ํ…Œ์ŠคํŠธ ์ž‘์„ฑ๋ฒ• ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝยท๊ตฌ์กฐ ๋ณ€๊ฒฝ ์‹œ
๋ฆฐํŠธ/ํฌ๋งท dev-guide/LINT_AND_FORMAT.md Biome ์„ค์ •, ๊ทœ์น™ ์š”์•ฝ, Git Hooks, IDE ์„ค์ • Biome ์„ค์ • ๋ณ€๊ฒฝ ์‹œ
TSDoc dev-guide/TSDOC_FORMAT_GUIDE.md API ์ฃผ์„ ํƒœ๊ทธยทํฌ๋งท, ์ด๋ฒคํŠธยท์—๋Ÿฌ ์ถ”๊ฐ€ ์ ˆ์ฐจ TSDoc ์ปจ๋ฒค์…˜ ๋ณ€๊ฒฝ ์‹œ
๋ฐ๋ชจ dev-guide/DEMO_GUIDE.md Sandpack ๋ฐ๋ชจ ๊ตฌ์กฐ, ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ์ฝ”๋“œ ํŒจํ„ด ๋ฐ๋ชจ ์ปดํฌ๋„ŒํŠธยท๊ตฌ์กฐ ๋ณ€๊ฒฝ ์‹œ
๋ฌธ์„œ ์‚ฌ์ดํŠธ dev-guide/DOCS_GUIDE.md ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐฉ์นจ, LLM ๋ฌธ์„œ ํŒŒ์ดํ”„๋ผ์ธ, ๋ฐฐํฌ ์ ˆ์ฐจ ๋ฐฐํฌยทLLM ํŒŒ์ดํ”„๋ผ์ธ ๋ณ€๊ฒฝ ์‹œ
llms.txt dev-guide/LLMS_TXT_GUIDE.md llms.txt ์ž‘์„ฑ ๊ทœ์น™, ๋งํฌ ํŒจํ„ด, ์ฒดํฌ๋ฆฌ์ŠคํŠธ llms.txt ๊ตฌ์กฐยท๋งํฌ ๊ทœ์น™ ๋ณ€๊ฒฝ ์‹œ
E2E ํ…Œ์ŠคํŠธ dev-guide/E2E_TEST_GUIDE.md ๋ฐ๋ชจ ๊ธฐ๋ฐ˜ E2E ํ…Œ์ŠคํŠธ ๊ตฌ์กฐ, ์ŠคํŽ™/ํ…Œ์ŠคํŠธ ์ž‘์„ฑ๋ฒ• E2E ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝยท๊ตฌ์กฐ ๋ณ€๊ฒฝ ์‹œ
E2E ๋ฆฌ๋ทฐ dev-guide/E2E_REVIEW_PROCESS.md ์ผ€์ด์Šค๋ณ„ ๋ฆฌ๋ทฐ ์ ˆ์ฐจ, ํ’ˆ์งˆ ๋“ฑ๊ธ‰, ํ˜„ํ™ฉ ํ…Œ์ด๋ธ” E2E ์ผ€์ด์Šค ๋ฆฌ๋ทฐ ์ง„ํ–‰ ์‹œ
ํผ๋ธ”๋ฆฌ์‹œ dev-guide/PUBLISH_GUIDE.md ๋ฒ„์ „ ์ •์ฑ…, ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ, workspace: ํ”„๋กœํ† ์ฝœ ๋ฐฐํฌ ํ™˜๊ฒฝยท๋ฒ„์ „ ์ •์ฑ… ๋ณ€๊ฒฝ ์‹œ
ํ•˜๋„ค์Šค dev-guide/HARNESS_GUIDE.md Claude Code ์Šคํ‚ฌ, ํ›…, ์„œ๋ธŒ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ ์Šคํ‚ฌยทํ›…ยท์—์ด์ „ํŠธ ์ถ”๊ฐ€/๋ณ€๊ฒฝ ์‹œ

๋ฌธ์„œ ์œ ์ง€๋ณด์ˆ˜ ์›์น™

๋‹จ์ผ ์ถœ์ฒ˜ ์›์น™

  • ์–ด๋–ค ๋‚ด์šฉ์ด๋“  ํ•œ ๊ณณ์—๋งŒ ์กด์žฌํ•œ๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ๋งํฌ๋กœ ์ฐธ์กฐํ•œ๋‹ค.
  • AGENTS.md / CLAUDE.md๋Š” ๊ทœ์น™ยท์ง„์ž…์ ๋งŒ ๋‹ด๋Š”๋‹ค. ์ƒ์„ธ ๋‚ด์šฉ์€ dev-guide/์—๋งŒ ์žˆ๋‹ค.
  • dev-guide/ ํŒŒ์ผ ๊ฐ„์—๋„ ์ค‘๋ณต์„ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. ๊ด€๋ จ ํŒŒ์ผ๋ผ๋ฆฌ ์„œ๋กœ ๋งํฌ๋กœ ์ฐธ์กฐํ•œ๋‹ค.

์—…๋ฐ์ดํŠธ ์ฑ…์ž„ํ‘œ

๋ณ€๊ฒฝ ์‚ฌํ•ญ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ํŒŒ์ผ
ํ•ต์‹ฌ ๊ทœ์น™ยท์›Œํฌํ”Œ๋กœ์šฐ ๋ณ€๊ฒฝ AGENTS.md + ํ•ด๋‹น dev-guide ํŒŒ์ผ
๋ช…๋ น์–ด ์ถ”๊ฐ€ยท๋ณ€๊ฒฝ AGENTS.md (์š”์•ฝ) + ํ•ด๋‹น dev-guide ํŒŒ์ผ (์ƒ์„ธ)
ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝยท๊ตฌ์กฐ ๋ณ€๊ฒฝ dev-guide/TEST_GUIDE.md
dev ์„œ๋ฒ„ยท๋นŒ๋“œ ํ™˜๊ฒฝ ๋ณ€๊ฒฝ dev-guide/DEV_GUIDE.md
๋ฐฐํฌยทLLM ํŒŒ์ดํ”„๋ผ์ธ ๋ณ€๊ฒฝ dev-guide/DOCS_GUIDE.md
llms.txt ๋งํฌ ๊ทœ์น™ ๋ณ€๊ฒฝ dev-guide/LLMS_TXT_GUIDE.md
Biome ์„ค์ • ๋ณ€๊ฒฝ dev-guide/LINT_AND_FORMAT.md
TSDoc ์ปจ๋ฒค์…˜ ๋ณ€๊ฒฝ dev-guide/TSDOC_FORMAT_GUIDE.md
๋ฐ๋ชจ ๊ตฌ์กฐยท์ปดํฌ๋„ŒํŠธ ๋ณ€๊ฒฝ dev-guide/DEMO_GUIDE.md
E2E ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝยท๊ตฌ์กฐ ๋ณ€๊ฒฝ dev-guide/E2E_TEST_GUIDE.md
E2E ์ผ€์ด์Šค ๋ฆฌ๋ทฐ ์ง„ํ–‰ dev-guide/E2E_REVIEW_PROCESS.md
๋ฐฐํฌ ํ™˜๊ฒฝยท๋ฒ„์ „ ์ •์ฑ… ๋ณ€๊ฒฝ dev-guide/PUBLISH_GUIDE.md
์Šคํ‚ฌยทํ›…ยท์—์ด์ „ํŠธ ๋ณ€๊ฒฝ dev-guide/HARNESS_GUIDE.md

๊ธˆ์ง€ ์‚ฌํ•ญ

  • AGENTS.md / CLAUDE.md์— dev-guide/ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • dev-guide/ ํŒŒ์ผ์— ๋‹ค๋ฅธ dev-guide/ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.