-
-
Notifications
You must be signed in to change notification settings - Fork 3
Conventions
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ๋ฉด์ ํ์ ๊ฐ์ ํฉ์ํ ๊ฐ๋ฐ ๊ด์ต์ ๋ฌธ์ํํฉ๋๋ค. ํญ์ ์ต์ ์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด์ ํ์ ๋ชจ๋ ๋ ธ๋ ฅํด์ฃผ์ จ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
- ๋ฌด๋ฃ ํ๋ก์ ํธ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ธ ๊นํ๋ธ ํ๋ก์ ํธ๋ฅผ ํตํด์ ์ด์(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)์ ์๋ฃ ์ฒ๋ฆฌ๋ ์ ์์ต๋๋ค.
-
ํ๋ก์ ํธ ๋ณด๋์์
To Do์ํ์ ํฐ์ผ์ ์ ํํ๊ณ ๋ณธ์ธ์๊ฒ ํ ๋นํฉ๋๋ค. - ํ๋ก์ ํธ ์ค์
- ๋จผ์ ํ๋ก์ ํธ ์ค์ ๊ฐ์ด๋๋ฅผ ์๋ฃํฉ๋๋ค.
- ๋ธ๋์น ์์ฑ
-
main๋ธ๋์น์์ ์๋ก์ด feature ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค. - ๋ธ๋์น ์ด๋ฆ์๋
-,_์ธ์ ํน์๋ฌธ์ ์ฌ์ฉ์ ์ ํ๋ฉ๋๋ค.
์ฐธ๊ณ ์ด์
- ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ์ปค๋ฐ
- ๋ธ๋์น ๋ด์์ ์์ค ์ฝ๋๋ฅผ ์์ ํ๊ณ ์ปค๋ฐํฉ๋๋ค.
- ๋ณ๊ฒฝ์ด ๋ชจ๋ ์๋ฃ๋๋ฉด ํฌํฌ๋ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ธ๋์น๋ฅผ ํธ์ํฉ๋๋ค.
- ํ ์คํธ ์์ฑ
- ๊ธฐ์ฌํ ์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๋์ง ํ์ธํ ์ ์๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
- PR ์์ฑ
- Pull Requests ํ์ด์ง์์ ์๋ก์ด PR์ ์์ฑํฉ๋๋ค.
- PR์ ์ ๋ชฉ๊ณผ ์ค๋ช ์ ๊ฐ๊ธ์ ํ๊ตญ์ด๋ก ์์ฑํด์ฃผ์ธ์. ์ด์ ์ ๋ชฉ๊ณผ ์ผ์นํด์ฃผ๋ฉด ๋์ค์ ์ฐพ๊ธฐ๊ฐ ํธํฉ๋๋ค.
- PR์ด ๋ฑ๋ก๋ ์ด์์ ์ฐ๊ด๋์ด ์๋ค๋ฉด, PR ์์ฑ ํ ์ค๋ฅธ์ชฝ ์ฌ์ด๋๋ฐ์
Developmentํญ๋ชฉ์์ ํด๋น ์ด์๋ฅผ ์ ํํด ์ฐ๊ฒฐํด์ฃผ์ธ์.
- PR ๋ฆฌ๋ทฐ ๋ฐ ๋ณํฉ
- ์ต์ ํ ๋ช ์ด์์ ๊ด๋ฆฌ์๊ฐ PR์ ๊ฒํ ํ๊ณ ์ฝ๋ฉํธ๋ฅผ ๋จ๊น๋๋ค.
- ๋ณ๊ฒฝ ์์ฒญ์ด ์์ ๊ฒฝ์ฐ, ์์ ์ ๋ฐ์ํ ํ ๋ค์ ํธ์ํ๊ณ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํฉ๋๋ค.
- ๋์์ธ ๋ณ๊ฒฝ์ด ์์ ๊ฒฝ์ฐ, Chromatic์ ํ์ฉํ์ฌ UI Review ๋จ๊ณ์์ ํด๋น ๋์์ธ์ ๋ด๋นํ ๋์์ด๋์๊ฒ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํฉ๋๋ค. (์์ฑ๋ PR์ ํ๋จ Merge ๋ถ๋ถ์์ ํ์ธํ ์ ์์)
[็ปๅ:image]UI Review: ์์ ๋ด์ญ์ ๋์์ธ ๋ด๋น์์๊ฒ ํ์ธ ์์ฒญํ๋ ์์
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์ ์ง์ ์ง์ ํ๋ ๊ฒ์ ์ผ๊ฐํด์ฃผ์ธ์.
- ํ๋นํ ์ด์ ์์)
- reactNode Type์ ์ฌ์ฉํด์ story์์ ๋ฐ์ดํ(")๋ฅผ ์ฌ์ฉํด์ผํ ๋ ->
control: 'text'์ฌ์ฉ - ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฌ๊ฐ exportํ๋ compound pattern์ ๊ฒฝ์ฐ ->
argType์ฌ์ฉ
- reactNode Type์ ์ฌ์ฉํด์ story์์ ๋ฐ์ดํ(")๋ฅผ ์ฌ์ฉํด์ผํ ๋ ->
- ํ๋นํ ์ด์ ์์)
- ํ ์คํธ ํ์ผ์ ๋ณ๋์ ๋๋ ํ ๋ฆฌ์ ์ค์ํ ํ์ง ์๊ณ ์ ํ๋ฆฌ์ผ์ด์ ํ์ผ ๋ฐ๋ก ์์ ๋ก๋๋ค.
- ๋จ์ํ ํ
์คํธ ๊ตฌ์กฐ๋ฅผ ์ํด์ ํ
์คํธ ๋์ ๋ชจ๋์ ๊ตฌ์กฐ๊ฐ ๋ณต์กํ์ง ์๋ค๋ฉด
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์ ์ฌ๋ฆฌ์๋ฉด ์๋์ผ๋ก ํ์ง ๊ฒ์ฌ๊ฐ ์งํ๋๊ณ ์คํจํ ๊ฒฝ์ฐ ๋ณํฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ ํ์ง ๊ฒ์ฌ๋ ๊ฐ๋ฐ์๊ฐ ๋ก์ปฌ ํ๊ฒฝ์์ ์ง์ ์งํํ์ค ์๋ ์์ต๋๋ค.
Prettier๋ฅผ ํตํด์ ์ผ๊ด์ ์ธ ์ฝ๋ ํฌ๋ฉงํ ์ ์ ์งํ๊ณ ์์ต๋๋ค. VSCode ์ฌ์ฉ์ ๋ถ๋ค์ Prettier ์ต์คํ ์ ์ ์ฐ์๋ฉด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์๋์ผ๋ก ์ฝ๋๋ฅผ ํฌ๋ฉงํ ํ ์ ์์ด์ ํธํ๋ ์ถ์ฒ๋๋ฆฝ๋๋ค.
Prettier options ๋ ๊ธฐ๋ณธ ์ค์ ๊ฐ์ผ๋ก ํด์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
ESLint๋ฅผ ํตํด์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ ์์ต๋๋ค. ๋ฆฐํ ๊ท์น์ ์๋ฐํ๊ณ ์๋ ์ฝ๋๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$ bun run lint
TypeScirpt๋ฅผ ํตํด์ ์ ์ ํ์ ๊ฒ์ฌ๋ฅผ ํ๊ณ ์์ต๋๋ค. ํ์ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$ bunx tsc
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