๋กœ๊ณ ๋กœ๊ณ 

Storybook

2025๋…„ 8์›” 26์ผ

  • Storybook์ด๋ž€?
    • Storybook์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ฌธ์„œํ™”ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ
    • React, Vue ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง€์›
    • UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ, ํ…Œ์ŠคํŠธ, ๊ณต์œ ํ•˜๊ธฐ ์ข‹๋‹ค.

ย 

ย 

  • ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?
    1. ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„ ๊ฐœ๋ฐœ์— ์ง‘์ค‘
      • ๊ธฐ์กด์—๋Š” ํŽ˜์ด์ง€ ์ „์ฒด์—์„œ๋งŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, Storybook์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋งŒ ๋–ผ์–ด๋‚ด์„œ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ์Šคํƒ€์ผ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    2. ๋””์ž์ด๋„ˆ์™€ ํ˜‘์—…์— ์œ ๋ฆฌ
      • ์šฐ๋ฆฌ๊ฐ€ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์Šค์›จ๊ฑฐ ๋ฌธ์„œ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด, ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋””์ž์ด๋„ˆ์—๊ฒŒ ์‹ค์ œ๋กœ ๊ตฌํ˜„๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.
      • ์ปดํฌ๋„ŒํŠธ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ์ƒํƒœ(hover, error, loading ๋“ฑ)์„ ํ•œ๋ˆˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ์˜์‚ฌ์†Œํ†ต์ด ์›ํ™œํ•ด์ง„๋‹ค.

ย 

ย 

  • ์–ด๋–ค ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋Š”๊ฐ€?
๊ธฐ๋Šฅ์„ค๋ช…
Docs์ž๋™ ๋ฌธ์„œํ™” (props ์„ค๋ช…, ์‚ฌ์šฉ ์˜ˆ์‹œ๋“ฑ)
Controlsprops๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์กฐ์ •ํ•ด๋ณด๋Š” ๊ธฐ๋Šฅ
Actions์ด๋ฒคํŠธ ๋ฐœ์ƒ ํ™•์ธ (onClick, onChange ๋“ฑ)
Addons์ ‘๊ทผ์„ฑ ๊ฒ€์‚ฌ, ๋ทฐํฌํŠธ ํ…Œ์ŠคํŠธ ๋“ฑ ํ™•์žฅ ๊ธฐ๋Šฅ ์ œ๊ณต

ย 

  • ์„ค์น˜ ๋ฐ ์„ค์ •
    • ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ ์Šคํ† ๋ฆฌ๋Š” .stories.tsx ๋˜๋Š” .stories.mdx ํ˜•ํƒœ๋กœ ์ž‘์„ฑ
    • ex) Button.stories.tsx
// ์„ค์น˜
npx storybook init

// ์‹คํ–‰
npm run storybook

ย