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/{subdir}/App.*ํ๋๋ง ๊ต์ฒดํ๋ค. ๋ชจ๋dev/ํ์ ๋๋ ํ ๋ฆฌ(scratch, basic-sample ๋ฑ)์index.html,main.*์ ์ ๋ ์์ ํ์ง ์๋๋ค.- dev ํ์ผ์์๋
@egjs/๋์@dev/alias๋ฅผ ์ฌ์ฉํ๋ค.
| 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/ํ์ผ์ ๋ด์ฉ์ ๊ทธ๋๋ก ๋ณต์ฌํ์ง ์๋๋ค.