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
hyoseong edited this page Dec 29, 2025 · 74 revisions

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

์ด์Šˆ ๊ด€๋ฆฌ

  • ๋ฌด๋ฃŒ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ธ ๊นƒํ—ˆ๋ธŒ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด์„œ ์ด์Šˆ(Jira์˜ ํ‹ฐ์ผ“ ๊ฐœ๋…)๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ์ด์Šˆ ์œ ํ˜•(Type)์„ ๋ฐ˜๋“œ์‹œ ์„ ํƒํ•ด์ฃผ์‹œ๊ณ , ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ ํ›„ ์šฐ์„  ์ˆœ์œ„(Priority)์™€ ์˜ˆ์ƒ ์†Œ์š” ์‹œ๊ฐ„(Est)๋ฅผ ํ•จ๊ป˜ ๋„ฃ์–ด์ฃผ์„ธ์š”.
  • ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ์Šคํ”„๋ฆฐํŠธ(Sprint)์™€ ์ƒํƒœ(Status)๋Š” ๋น„์›Œ๋‘์–ด ์ผ๋‹จ ๋ฐฑ๋กœ๊ทธ(Backlog)์— ๋‘๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์Šˆ๋Š” ํŒ€ ํšŒ์˜ ๋•Œ Grooming, Triage, Planning ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„์— ์Šคํ”„๋ฆฐํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์›์น™์ž…๋‹ˆ๋‹ค.
  • ๊ธด๊ธ‰ ์ด์Šˆ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์Šคํ”„๋ฆฐํŠธ์— To Do ์ด์Šˆ๊ฐ€ ์†Œ์ง„๋˜์—ˆ์„ ๋•Œ๋Š” ๋””์Šค์ฝ”๋“œ์—์„œ ์†Œํ†ต ํ›„์— ํ˜„์žฌ ์Šคํ”„๋ฆฐํŠธ์— ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
  • ์ž์œจ์ ์ธ ํ˜‘์—…๊ณผ ์ž๋ฐœ์ ์ธ ๊ธฐ์—ฌ๋ฅผ ์œ„ํ•ด์„œ ํŠน๋ณ„ํ•œ ์‚ฌ์œ ๊ฐ€ ์—†๋‹ค๋ฉด ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋‹ด๋‹น์ž๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ด์Šˆ์˜ ์ƒํƒœ๋Š” ์Šคํ”„๋ฆฐํŠธ์— ์ถ”๊ฐ€๋˜์—ˆ์„ ๋•Œ ๋ถ€ํ„ฐ To Do๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.
  • ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์‹œ๋ฉด ์ด์Šˆ์˜ ์ƒํƒœ๋ฅผ ๋ฐ˜๋“œ์‹œ In Progress๋กœ ์˜ฎ๊ฒจ์ฃผ์„ธ์š”. (๋งŽ์ด ๊นŒ๋จน๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.)
  • ์ด์Šˆ๊ฐ€ ์—ฐ๊ฒฐ๋œ Pull Request๊ฐ€ ๋ณ‘ํ•ฉ๋˜๋ฉด ์ด์Šˆ๋Š” ์ž๋™์œผ๋กœ Done ์ƒํƒœ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ๋™์‹œ์— 2๊ฐœ ์ด์ƒ์˜ ์ด์Šˆ๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์ฃผ์„ธ์š”. WIP๊ฐ€ 2๋ณด๋‹ค ์ปค์ง€๋ฉด ํŒ€์˜ ๋ฆฌ๋ทฐ ๋ถ€๋‹ด์ด ์ปค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • PM์ด ๊ตฌํ•ด์งˆ ๋•Œ ๊นŒ์ง€ ๋ชจ๋‘๊ฐ€ PM์ด๋ผ๋Š” ๋งˆ์Œ๊ฐ€์ง์œผ๋กœ ํ”„๋กœ์ ํŠธ์— ์ž„ํ•ด์ฃผ์„ธ์š”. ์Šค์Šค๋กœ ํ‹ฐ์ผ“์„ ์ƒ์„ฑํ•˜๊ณ  ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ƒ์„ธํžˆ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
  • ์„œ๋ธŒ ์ด์Šˆ๋Š” Spike ํ‹ฐ์ผ“์—์„œ ํŒŒ์ƒ๋œ Action ํ‹ฐ์ผ“์— ํ•œํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ธŒ ์ด์Šˆ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•„๋„, ์ƒ์œ„ Spike ํ‹ฐ์ผ“(Parent Issue)์€ ์™„๋ฃŒ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PR ๊ด€๋ฆฌ

  1. ํ”„๋กœ์ ํŠธ ๋ณด๋“œ์—์„œ To Do ์ƒํƒœ์˜ ํ‹ฐ์ผ“์„ ์„ ํƒํ•˜๊ณ  ๋ณธ์ธ์—๊ฒŒ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  2. ํ”„๋กœ์ ํŠธ ์„ค์ •
  1. ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
  • main ๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ๋กœ์šด feature ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์—๋Š” -, _ ์™ธ์˜ ํŠน์ˆ˜๋ฌธ์ž ์‚ฌ์šฉ์€ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
    ์ฐธ๊ณ  ์ด์Šˆ
  1. ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋ฐ ์ปค๋ฐ‹
  • ๋ธŒ๋žœ์น˜ ๋‚ด์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ์ด ๋ชจ๋‘ ์™„๋ฃŒ๋˜๋ฉด ํฌํฌ๋ฐ›์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค.
  1. ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
  • ๊ธฐ์—ฌํ•œ ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  1. PR ์ƒ์„ฑ
  • Pull Requests ํŽ˜์ด์ง€์—์„œ ์ƒˆ๋กœ์šด PR์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • PR์˜ ์ œ๋ชฉ๊ณผ ์„ค๋ช…์€ ๊ฐ€๊ธ‰์  ํ•œ๊ตญ์–ด๋กœ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด์Šˆ ์ œ๋ชฉ๊ณผ ์ผ์น˜ํ•ด์ฃผ๋ฉด ๋‚˜์ค‘์— ์ฐพ๊ธฐ๊ฐ€ ํŽธํ•ฉ๋‹ˆ๋‹ค.
  • PR์ด ๋“ฑ๋ก๋œ ์ด์Šˆ์™€ ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค๋ฉด, PR ์ƒ์„ฑ ํ›„ ์˜ค๋ฅธ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”์˜ Development ํ•ญ๋ชฉ์—์„œ ํ•ด๋‹น ์ด์Šˆ๋ฅผ ์„ ํƒํ•ด ์—ฐ๊ฒฐํ•ด์ฃผ์„ธ์š”.
PR ์ด์Šˆ ์—ฐ๊ฒฐ ์˜ˆ์‹œ
  1. PR ๋ฆฌ๋ทฐ ๋ฐ ๋ณ‘ํ•ฉ
  • ์ตœ์†Œ ํ•œ ๋ช… ์ด์ƒ์˜ ๊ด€๋ฆฌ์ž๊ฐ€ PR์„ ๊ฒ€ํ† ํ•˜๊ณ  ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ ์š”์ฒญ์ด ์žˆ์„ ๊ฒฝ์šฐ, ์ˆ˜์ •์„ ๋ฐ˜์˜ํ•œ ํ›„ ๋‹ค์‹œ ํ‘ธ์‹œํ•˜๊ณ  ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์ž์ธ ๋ณ€๊ฒฝ์ด ์žˆ์„ ๊ฒฝ์šฐ, Chromatic์„ ํ™œ์šฉํ•˜์—ฌ UI Review ๋‹จ๊ณ„์—์„œ ํ•ด๋‹น ๋””์ž์ธ์„ ๋‹ด๋‹นํ•œ ๋””์ž์ด๋„ˆ์—๊ฒŒ ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. (์ƒ์„ฑ๋œ PR์˜ ํ•˜๋‹จ Merge ๋ถ€๋ถ„์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ)
[็”ปๅƒ:image]

UI Review: ์ž‘์—… ๋‚ด์—ญ์„ ๋””์ž์ธ ๋‹ด๋‹น์ž์—๊ฒŒ ํ™•์ธ ์š”์ฒญํ•˜๋Š” ์ž‘์—…

[็”ปๅƒ:image]

UI Tests: ์ฝ”๋“œ ๋ณ€๊ฒฝ์œผ๋กœ ๋ฐœ์ƒํ•œ UI ๋ณ€๊ฒฝ์ด ํ˜น์‹œ UI Regression์€ ์•„๋‹Œ์ง€ Chromatic์ด ๋– ์ค€ ์Šค๋ƒ…์ƒท์„ ํ•˜๋‚˜์”ฉ ๋น„๊ตํ•˜๋ฉด์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์Šค์Šค๋กœ ํ™•์ธํ•ด์ฃผ๋Š” ์ž‘์—…

  • ์ตœ์†Œ 1๊ฐœ์˜ ์Šน์ธ์„ ๋ฐ›์€ ํ›„ main ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ดํ›„ ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ํ†ตํ•ด ๊ธฐ์—ฌํ•œ ๋‚ด์šฉ์ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

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

  • src/components ์•„๋ž˜์— ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์— ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ, ์Šคํ† ๋ฆฌ ํŒŒ์ผ, ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์œ„์น˜์‹œํ‚ต๋‹ˆ๋‹ค.
  • ํด๋” ์ด๋ฆ„, ํŒŒ์ผ ์ด๋ฆ„, ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ ๋ชจ๋‘ PascalCase๋กœ letter case๋ฅผ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€์ˆ˜ ์ด๋ฆ„, ํ•จ์ˆ˜ ์ด๋ฆ„, prop ์ด๋ฆ„์€ ๋ชจ๋‘ camelCase๋กœ letter case๋ฅผ ํ†ต์ผํ•ฉ๋‹ˆ๋‹ค.
  • index.tsx ํŒŒ์ผ์„ ํ†ตํ•ด์„œ re-exportํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
โ”œโ”€โ”€ src
โ”‚ โ”œโ”€โ”€ components
โ”‚ โ”‚ โ”œโ”€โ”€ Checkbox
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Checkbox.stories.tsx
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ Checkbox.test.tsx
โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ Checkbox.tsx

์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ ๊ฒ€ํ† 

  • ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„์™€ ๊ตฌํ˜„์€ ๊ตฌ๋ถ„ํ•ด์„œ Pull Request๋ฅผ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋žŒ์งํ•œ ์ปดํฌ๋„ŒํŠธ API์— ๋Œ€ํ•œ ์‚ฌ์ „ ํ•ฉ์˜๋ฅผ ์ง„ํ–‰ํ•จ์œผ๋กœ์จ ์—‰๋šฑํ•œ ๊ตฌํ˜„์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.
  • PR ๋ณ‘ํ•ฉ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ตœ์†Œ 1๋ช…์˜ ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž๋กœ๋ถ€ํ„ฐ ์Šน์ธ์„ ๋ฐ›์•„์•ผ ํ•˜์ง€๋งŒ, ํ’ˆ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•ด์„œ ๊ธด๊ธ‰ ๊ฑด์ด ์•„๋‹ˆ๋ผ๋ฉด 2๊ฐœ์˜ ์Šน์ธ์„ ๋ฐ›๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.
  • [Proposed] "Resolve conversation" ๋ฒ„ํŠผ์€ ์ฝ”๋“œ ๊ฒ€ํ† ์ž๊ฐ€ ํ”ผ๋“œ๋ฐฑ์ด ๋ณธ์ธ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ์กฐ์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ฐจ์›์—์„œ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ž‘์„ฑ์ž๊ฐ€ ์ž„์˜๋กœ Resolved ํ‘œ์‹œํ•  ์‹œ ๋ถˆํ•„์š”ํ•œ ์˜คํ•ด๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์Šคํ† ๋ฆฌ

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

ํ…Œ์ŠคํŠธ

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

์˜์กด์„ฑ

  • ํ•ญ์ƒ ์˜์กด์„ฑ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ Dependabot์„ ์ฝ”๋“œ ์ €์žฅ์†Œ์— ์„ค์ •ํ•ด๋†“์•˜์Šต๋‹ˆ๋‹ค.
  • Dependabot์ด ์˜ฌ๋ฆฐ PR์„ ๋Šฆ์ง€ ์•Š๊ฒŒ ๊ฒ€ํ†  ๋ฐ ๋ณ‘ํ•ฉํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ์ผ์œผํ‚ค๋Š” breaking changes๋ฅผ ๋Œ€์‘ํ•˜๋Š” ์ž‘์—…์€ ํŒ€ ๊ฐœ๋ฐœ์ž ๋ชจ๋‘์˜ ๊ณต๋™ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.
  • Dependabot์ด ์˜ฌ๋ฆฐ PR์„ ๋ฐ˜๋“œ์‹œ PR ์ฝ”๋ฉ˜ํŠธ๋ฅผ ํ†ตํ•ด์„œ Dependabot์—๊ฒŒ ์›ํ•˜์‹œ๋Š” ์ž‘์—…์„ ์‹œ์ผœ์ฃผ์„ธ์š”. ์ง์ ‘ ์ˆ˜์ •ํ•˜์‹œ๋ฉด Dependabot์€ ํ•ด๋‹น PR์„ ๋” ์ด์ƒ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•ด์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ’ˆ์งˆ ๊ฒ€์‚ฌ

main ๋ธŒ๋žœ์น˜์— ํ’ˆ์งˆ ๊ธฐ์ค€์— ๋ฏธ๋‹ฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์œ ์ž…์ด ๋˜์ง€ ์•Š๋„๋ก PR์„ ์˜ฌ๋ฆฌ์‹œ๋ฉด ์ž๋™์œผ๋กœ ํ’ˆ์งˆ ๊ฒ€์‚ฌ๊ฐ€ ์ง„ํ–‰๋˜๊ณ  ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋ณ‘ํ•ฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ’ˆ์งˆ ๊ฒ€์‚ฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์ง์ ‘ ์ง„ํ–‰ํ•˜์‹ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Formatting

Prettier๋ฅผ ํ†ตํ•ด์„œ ์ผ๊ด€์ ์ธ ์ฝ”๋“œ ํฌ๋ฉงํŒ…์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. VSCode ์‚ฌ์šฉ์ž ๋ถ„๋“ค์€ Prettier ์ต์Šคํ…์…˜์„ ์“ฐ์‹œ๋ฉด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์ž๋™์œผ๋กœ ์ฝ”๋“œ๋ฅผ ํฌ๋ฉงํŒ…ํ•  ์ˆ˜ ์žˆ์–ด์„œ ํŽธํ•˜๋‹ˆ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Prettier options ๋Š” ๊ธฐ๋ณธ ์„ค์ •๊ฐ’์œผ๋กœ ํ•ด์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Linting

ESLint๋ฅผ ํ†ตํ•ด์„œ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฐํŒ… ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ bun run lint

Type Checking

TypeScirpt๋ฅผ ํ†ตํ•ด์„œ ์ •์  ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ€์ž… ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ bunx tsc

npm ํŒจํ‚ค์ง€ ๋ฐฐํฌ ๊ณผ์ •

flowchart
 A[main ๋ธŒ๋žœ์น˜]
 B[release/x.y.z ๋ธŒ๋žœ์น˜]
 C["install test<br/>(GitHub Action)"]
 D["ํƒœ๊ทธ ์ƒ์„ฑ<br/>(GitHub Action)"]
 E["GitHub Release Draft ์ƒ์„ฑ<br/>(GitHub Action)"]
 F["npm publish ์‹คํ–‰<br/>(GitHub Action)"]
 A -->|"release ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ<br/>(๊ฐœ๋ฐœ์ž)"| B
 B -->|"QA / ํ…Œ์ŠคํŠธ ๋ฐ ์ˆ˜์ •, PR ์ƒ์„ฑ<br/>(๊ฐœ๋ฐœ์ž)"| C
 C -->|"release/x.y.z โ†’ main ๋ณ‘ํ•ฉ<br/>(๊ฐœ๋ฐœ์ž)"| D
 D --> E
 E -->|"๋‚ด์šฉ ๊ฒ€ํ†  ๋ฐ GitHub Release ๋ฐœํ–‰<br/>(๊ฐœ๋ฐœ์ž)"| F
 F --> A
Loading

Clone this wiki locally

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