Skip to Content
Nextra 4.0 is released πŸŽ‰

πŸ“š Frontend Workshop

πŸ“– κ°œμš”

frontend-workshop μ›Œν¬μŠ€νŽ˜μ΄μŠ€λŠ” UI μ»΄ν¬λ„ŒνŠΈλ₯Ό λ…λ¦½μ μœΌλ‘œ κ°œλ°œν•˜κ³  λ¬Έμ„œν™”ν•˜κΈ° μœ„ν•œ Storybook 기반의 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. Turborepo λͺ¨λ…Έλ ˆν¬ ν™˜κ²½μ—μ„œ Storybook을 μ–΄λ–»κ²Œ μ„€μ •ν•˜κ³  ν™œμš©ν•˜λŠ”μ§€ λ³΄μ—¬μ£ΌλŠ” μ˜ˆμ‹œ ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€.

πŸ› οΈ 제곡 κΈ°λŠ₯

  • UI μ»΄ν¬λ„ŒνŠΈ 개발: 독립적인 ν™˜κ²½μ—μ„œ UI μ»΄ν¬λ„ŒνŠΈλ₯Ό κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ¬Έμ„œν™”: 각 μ»΄ν¬λ„ŒνŠΈμ˜ μ‚¬μš© 사둀λ₯Ό λ¬Έμ„œν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • Turborepo 톡합: Turborepo 기반 λͺ¨λ…Έλ ˆν¬ ν™˜κ²½μ—μ„œ Storybook 톡합을 μ§€μ›ν•©λ‹ˆλ‹€.
  • ν…ŒμŠ€νŠΈ μžλ™ν™”: μ ‘κ·Όμ„±(a11y) ν…ŒμŠ€νŠΈ 및 E2E ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ 섀정이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • Docker 지원: Storybook을 Docker μ»¨ν…Œμ΄λ„ˆλ‘œ 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“‚ μ£Όμš” 디렉토리 ꡬ쑰

  • src/: Storybook μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ†ŒμŠ€ μ½”λ“œ, μ»΄ν¬λ„ŒνŠΈ 및 μŠ€ν† λ¦¬ 파일이 μœ„μΉ˜ν•©λ‹ˆλ‹€.
    • stories/: Storybook μŠ€ν† λ¦¬ 파일이 μœ„μΉ˜ν•©λ‹ˆλ‹€.
    • assets/: 정적 μžμ‚°(이미지, 폰트 λ“±)이 μœ„μΉ˜ν•©λ‹ˆλ‹€.
  • public/: 정적 μžμ‚°
  • vite.config.ts: Vite μ„€μ • 파일
  • tsconfig.json: TypeScript μ„€μ • 파일

βš™οΈ Storybook μ„€μ •

  • .storybook/main.ts: Storybook의 핡심 μ„€μ • 파일둜, μŠ€ν† λ¦¬ 파일 경둜(stories), μ• λ“œμ˜¨(addons), ν”„λ ˆμž„μ›Œν¬ 섀정을 λ‹΄λ‹Ήν•©λ‹ˆλ‹€.
  • .storybook/preview.ts: Storybook의 κΈ€λ‘œλ²Œ νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€. 컨트둀 맀처, Tailwind 기반의 μ»€μŠ€ν…€ 뷰포트, μ ‘κ·Όμ„±(a11y) ν…ŒμŠ€νŠΈ λͺ¨λ“œ 등을 μ§€μ •ν•©λ‹ˆλ‹€.
  • .storybook/test-runner.ts: Storybook ν…ŒμŠ€νŠΈ λŸ¬λ„ˆμ˜ λ™μž‘μ„ μ»€μŠ€ν„°λ§ˆμ΄μ¦ˆν•©λ‹ˆλ‹€. 각 μŠ€ν† λ¦¬μ˜ μ ‘κ·Όμ„±(a11y) 검사λ₯Ό μžλ™ν™”ν•˜κ³ , κ²°κ³Όλ₯Ό JUnit 포맷으둜 μ €μž₯ν•©λ‹ˆλ‹€.
  • .storybook/vitest.setup.ts: Storybookκ³Ό Vitest 톡합 μ‹œ ν•„μš”ν•œ ν”„λ‘œμ νŠΈ μ–΄λ…Έν…Œμ΄μ…˜μ„ μ„€μ •ν•©λ‹ˆλ‹€.

🐳 Dockerfile 제곡

  • Dockerfile: Storybook을 정적 μ‚¬μ΄νŠΈλ‘œ λΉŒλ“œν•˜μ—¬ NGINX둜 μ„œλΉ™ν•˜λŠ” ν”„λ‘œλ•μ…˜μš© Docker μ΄λ―Έμ§€μž…λ‹ˆλ‹€. λ©€ν‹°μŠ€ν…Œμ΄μ§€ λΉŒλ“œλ‘œ μ˜μ‘΄μ„± μ„€μΉ˜, λΉŒλ“œ, 배포 이미지λ₯Ό λΆ„λ¦¬ν•˜μ—¬ μ΅œμ ν™”ν•©λ‹ˆλ‹€.
  • Dockerfile.test-runner: Storybook μ ‘κ·Όμ„± 및 E2E ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ ν™˜κ²½μ„ κ΅¬μ„±ν•˜λŠ” Docker μ΄λ―Έμ§€μž…λ‹ˆλ‹€. Playwright λ“± ν…ŒμŠ€νŠΈ 도ꡬλ₯Ό ν¬ν•¨ν•˜λ©°, test:storybook 슀크립트λ₯Ό μ‹€ν–‰ν•΄ CI ν™˜κ²½μ—μ„œ Storybook ν…ŒμŠ€νŠΈλ₯Ό μžλ™ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ œκ³΅λ˜λŠ” 2개의 Dockerfile 은 각각 Storybook 을 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ μ„œλΉ™ν•˜κΈ° μœ„ν•œ Dockerfile κ³Ό, ν…ŒμŠ€νŠΈ λŸ¬λ„ˆλ₯Ό μœ„ν•œ Dockerfile μž…λ‹ˆλ‹€. 이듀을 μ‹€μ œ CI/CD νŒŒμ΄ν”„λΌμΈμ—μ„œ ν™œμš©ν•˜μ—¬, Storybook을 μžλ™μœΌλ‘œ λΉŒλ“œν•˜κ³  ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œ ν…ŒμŠ€νŠΈμ—μ„œμ˜ μ‚¬μš© μ˜ˆμ‹œλŠ” ν…ŒμŠ€νŒ… > Storybook ν…ŒμŠ€νŠΈ λ¬Έμ„œλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

πŸ”— μ—°κ²°λœ μ›Œν¬μŠ€νŽ˜μ΄μŠ€

이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λ‹€μŒ 경둜의 μŠ€ν† λ¦¬λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€:

  1. ../src/**/*.mdx
  2. ../src/**/*.stories.@(js|jsx|mjs|ts|tsx)
  3. ../../../packages/react-ui/src/**/*.stories.@(js|jsx|mjs|ts|tsx)

⬇️ μ„€μΉ˜ 방법

pnpm install

▢️ Storybook μ‹€ν–‰

μ•„λž˜μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•œ 후에 http://localhost:6006β€‰μ—μ„œ Storybook을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

pnpm run dev

πŸ“¦ λΉŒλ“œ 및 배포

pnpm run build

λΉŒλ“œ ν›„, storybook-static 디렉토리에 정적 파일이 μƒμ„±λ©λ‹ˆλ‹€. 이 디렉토리λ₯Ό NGINX λ“± μ›Ή μ„œλ²„μ— 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ§ͺ ν…ŒμŠ€νŠΈ μ‹€ν–‰

pnpm run test:storybook

이 λͺ…λ Ήμ–΄λŠ” Storybook의 μ ‘κ·Όμ„±(a11y) ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. ν…ŒμŠ€νŠΈ κ²°κ³ΌλŠ” JUnit 포맷으둜 test-results/ 디렉토리에 μ €μž₯λ©λ‹ˆλ‹€.


Last updated on