Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
Yunsup Sim(์‹ฌ์œค์„ญ) edited this page Mar 21, 2026 · 74 revisions

์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋ฉด์„œ ํŒ€์› ๊ฐ„์— ํ•ฉ์˜ํ•œ ๊ฐœ๋ฐœ ๊ด€์Šต์„ ๋ฌธ์„œํ™”ํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ํŒ€์› ๋ชจ๋‘ ๋…ธ๋ ฅํ•ด์ฃผ์…จ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

  • src/components ์•„๋ž˜์— ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์— ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ, ์Šคํ† ๋ฆฌ ํŒŒ์ผ, ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์œ„์น˜์‹œ์ผœ ์ฃผ์„ธ์š”.

  • ํด๋” ์ด๋ฆ„, ํŒŒ์ผ ์ด๋ฆ„, ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ ๋ชจ๋‘ PascalCase๋กœ letter case๋ฅผ ํ†ต์ผํ•ด ์ฃผ์„ธ์š”.

  • ๋ณ€์ˆ˜ ์ด๋ฆ„, ํ•จ์ˆ˜ ์ด๋ฆ„, prop ์ด๋ฆ„์€ ๋ชจ๋‘ camelCase๋กœ letter case๋ฅผ ํ†ต์ผํ•ด ์ฃผ์„ธ์š”.

  • index.tsx ํŒŒ์ผ์„ ํ†ตํ•ด re-exportํ•˜์ง€ ๋งˆ์„ธ์š”.

    โ”œโ”€โ”€ src
    โ”‚ โ”œโ”€โ”€ components
    โ”‚ โ”‚ โ”œโ”€โ”€ Checkbox
    โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Checkbox.stories.tsx
    โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Checkbox.test.tsx
    โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Checkbox.tsx
    
  • Compound pattern์˜ ๊ฒฝ์šฐ Object.assign์„ ํ†ตํ•œ ๋‹ค์Œ dot-notation ํ˜•์‹์˜ export๊ณผ RSC ์ง€์›์„ ์œ„ํ•œ named-export๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์„ธ์š”.

    • ์ตœ์ƒ๋‹จ Root๋Š” ๋ฌด์กฐ๊ฑด dot-notation์—†์ด ์ œ๊ณต
    • named-export๋ฅผ ๋”ฐ๋กœ ์ œ๊ณต
    <Card> {/* ์ตœ์ƒ๋‹จ Root๋Š” ๋ฌด์กฐ๊ฑด dot-notation์—†์ด ์ œ๊ณต */}
     <Card.Header />
     <Card.Body />
     <Card.Footer />
    </Card>

์ปดํฌ๋„ŒํŠธ

  • ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” function ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•ด์ฃผ์„ธ์š”.
  • ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ์ž‘์„ฑํ•˜์—ฌ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ด์ฃผ์„ธ์š”.
  • Boolean props๋Š” is, has ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ˜•์šฉ์‚ฌ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. (์˜ˆ: reversed)
  • API ์„ค๋ช…์„ ์ž‘์„ฑํ•  ๋•Œ๋Š” ๋ช…์‚ฌ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š” (์˜ˆ: /*_ ๋น„ํ™œ์„ฑํ™” ์ƒํƒœ _/)
  • ์‹ ๊ทœ ์ปดํฌ๋„ŒํŠธ ๊ฐœ๋ฐœ์‹œ index.ts์— re-exportํ•˜์—ฌ root importimport { Button } from "daleui"๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ์„ธ์š”

์Šคํ† ๋ฆฌ

  • ์Šคํ† ๋ฆฌ ์ œ๋ชฉ์ด ์ปดํฌ๋„ŒํŠธ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ์ž๋™ ์œ ์ถ”๋˜๋„๋ก title ์†์„ฑ ๊ฐ’์€ ์ƒ๋žตํ•ด์ฃผ์„ธ์š”. ๋ฌธ์ž์—ด๋กœ ์ง์ ‘ ๋ช…์‹œํ•˜๋ฉด ํƒ€์ž… ์•ˆ์ „(type-safe)ํ•˜์ง€ ์•Š๊ณ , ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ๋•Œ ์‹ฑํฌ๊ฐ€ ๊นจ์ง€๊ธฐ ์‰ฌ์šฐ๋‹ˆ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.
  • ์—ฌ๋Ÿฌ ์Šคํ† ๋ฆฌ์— ๊ฑธ์ณ ํ•„์š”ํ•œ args๋Š” ์Šคํ† ๋ฆฌ ์ˆ˜์ค€์—์„œ ์ค‘๋ณตํ•˜์ง€ ๋งˆ์‹œ๊ณ  ์ปดํฌ๋„ŒํŠธ ์ˆ˜์ค€์—์„œ ์ง€์ •ํ•ด์ฃผ์„ธ์š”.
  • ์ปดํฌ๋„ŒํŠธ์˜ ๊ธฐ๋ณธ๊ฐ’์€ args์—์„œ ์„ ์–ธํ•˜์—ฌ, ์Šคํ† ๋ฆฌ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ ํƒ๋˜๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
  • ์Šคํ† ๋ฆฌ๋ถ์ด ๊ธฐ๋ณธ ์„ค์ •ํ•ด ์ค€ arg type์„ ๋ฎ์–ด์“ฐ๋ฉด, ์ปดํฌ๋„ŒํŠธ ํƒ€์ž…์ด ๋ณ€ํ•  ๋•Œ๋งˆ๋‹ค ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ ๊ฒฝ ์จ์„œ arg type์„ ์กฐ์ •ํ•ด์•ผ ํ•˜๋‹ˆ ์ฃผ์˜ํ•ด ์ฃผ์„ธ์š”. ์•„์ฃผ ํƒ€๋‹นํ•œ ์ด์œ ๊ฐ€ ์—†๋Š” ํ•œ arg type์„ ์ง์ ‘ ์ง€์ •ํ•˜์ง€ ๋งˆ์„ธ์š”.
    • ํƒ€๋‹นํ•œ ์ด์œ  ์˜ˆ์‹œ)
      1. ReactNode Type์„ ์‚ฌ์šฉํ•ด์„œ story์—์„œ ๋”ฐ์˜ดํ‘œ(")๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ -> control: 'text' ์‚ฌ์šฉ
      2. ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ exportํ•˜๋Š” compound pattern์˜ ๊ฒฝ์šฐ -> argType ์‚ฌ์šฉ
  • ํ•ญ์ƒ ๊ณ ์ •๋˜์–ด์•ผ ํ•˜๋Š” prop์€ Story์˜ argTypes์—์„œ control: false๋กœ ์„ ์–ธํ•ด ์ฃผ์„ธ์š”.
    • ex) Orientation Story์—์„œ orientation props
  • Docs ์„ค๋ช…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ์ฃผ์„์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, Compound Pattern์˜ ๊ฒฝ์šฐ ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ง์ ‘ export๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ Docs ์„ค๋ช…์€ ์Šคํ† ๋ฆฌ์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ

  • ํ…Œ์ŠคํŠธ ํŒŒ์ผ์€ ๋ณ„๋„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ค‘์•™ํ™”ํ•˜์ง€ ์•Š๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ์ผ ๋ฐ”๋กœ ์˜†์— ๋‘์„ธ์š”.
  • ๋‹จ์ˆœํ•œ ํ…Œ์ŠคํŠธ ๊ตฌ์กฐ๋ฅผ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ๋ชจ๋“ˆ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•˜์ง€ ์•Š๋‹ค๋ฉด describe()-it() ๋Œ€์‹ ์— test()๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์„ธ์š”.
  • ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๋•Œ๋Š” fireEvent ๋Œ€์‹  @testing-library/user-event ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์„ธ์š”. ๋ธŒ๋ผ์šฐ์ € ์ž…์žฅ์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ œ๋ชฉ์€ ํ•œ๊ตญ์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์„ธ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์‰ฝ๋„๋ก ํ•œ๊ธ€๋กœ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
  • ์Šคํ† ๋ฆฌ(Storybook)์™€ ํ…Œ์ŠคํŠธ(Unit Test)๋Š” ๋ชฉ์ ์ด ๋‹ค๋ฅด๋ฏ€๋กœ ๋ถ„๋ฆฌ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”.
    • ์Šคํ† ๋ฆฌ: ๋ฌธ์„œํ™” ๋ฐ ๋ฐ๋ชจ ๋ชฉ์  / ํ…Œ์ŠคํŠธ: ๋™์ž‘ ๊ฒ€์ฆ ๋ฐ ๋ช…์„ธ ๋ชฉ์ 
    • ๋”ฐ๋ผ์„œ, ์Šคํ† ๋ฆฌ์— ์˜์กดํ•˜๋Š” ํ…Œ์ŠคํŠธ(composeStories ๋“ฑ)๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.
    • ํ…Œ์ŠคํŠธ๋Š” ์Šคํ† ๋ฆฌ ๋ณ€๊ฒฝ์— ์˜ํ–ฅ๋ฐ›์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”.
    • ๊ด€๋ จ ๋…ผ์˜: Github ์ด์Šˆ, ๊ด€๋ จ ๋…ผ์˜: ๋””์Šค์ฝ”๋“œ ์ •๋ฆฌ

Clone this wiki locally

AltStyle ใซใ‚ˆใฃใฆๅค‰ๆ›ใ•ใ‚ŒใŸใƒšใƒผใ‚ธ (->ใ‚ชใƒชใ‚ธใƒŠใƒซ) /