Issue๋ ํฌ๊ณ ์์ ์ ๋ฌด์ ๋จ์์ ๋๋ค.
๋ชจ๋๊ฐ Issue์ ์ ๋ชฉ๋ง ๋ณด๊ณ ๋ ์ด๋ ํ ์์ ์ ํ๋์ง ์ ์ ์๋๋ก, ์ค์ค๋ก์ ํ๋จ ํ์ ์ ๋๋์ด ์ฃผ์ธ์.
Sub Issue๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํด์ ์์ ์ ์งํํด์ฃผ์ธ์. ์ต์ข ์ ์ผ๋ก, ๊ฐ์ฅ ํ์์ ์๋ Issue๋ ๊ณผ๋ํ ์์ ๋์ ํฌํจํด์๋ ์๋ฉ๋๋ค.
- ex. [Chore] ๋ก๊ทธ์ธ ํ์ด์ง ์ ์
- ํ์ ์ ์ข ๋ฅ์ ์ํฉ๋ณ ๊ตฌ๋ถ์ ์๋ ์ํฉ์ ๋ง๋ Tag๋ฅผ ๋ถ์ฌ์ฃผ์ธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๊ฐ๋ฐ ํ๊ฒฝ ์ค์ , ์์กด์ฑ ์ค์น ๋ฑ ๊ธฐ๋ฅ๊ณผ ์ง์ ์ ์ธ ๊ด๋ จ์ด ์๋ ์์ ์ ๋๋ค.
ex) ํจํค์ง ์ ๋ฐ์ดํธ, CI/CD ์ค์
์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์์ ์ ๋๋ค.
ex) ํ์๊ฐ์ , ๋คํฌ๋ชจ๋ ๋ฑ ์ฌ์ฉ์์๊ฒ ์๋กญ๊ฒ ์ ๊ณต๋๋ ๊ธฐ๋ฅ
Fix์ Bug๋ ๊ฐ์ Issue Template์ ๊ณต์ ํฉ๋๋ค. ์์ฑ ์์ ํ๊ทธ๋ 1๊ฐ๋ง ์ ์งํด์ฃผ์ธ์.
๊ตฌ๋ถ
- Fix : ์ฌ์ฉ์๊ฐ ๋์ํ์ ๋ ์๋ชป๋ ๋์์ ์ ์ ๋์์ผ๋ก ๋ณ๊ฒฝ
- Bug : ์์์น ๋ชปํ ๋ฌธ์ ๋๋ ์ค๋ฅ ํ์์ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ
์ฝ๋ ๊ตฌ์กฐ ๊ฐ์ ๋ฑ ์ฌ์ฉ์ ๊ฒฝํ์ ๋์ผํ์ง๋ง, ๋ด๋ถ ์ฝ๋ ๊ตฌ์กฐ ๋๋ ํ์ง์ ๊ฐ์ ํ๋ ์์ ์ ๋๋ค.
ex) ์ปดํฌ๋ํธ ๋ถ๋ฆฌ, ๋ก์ง ์ต์ ํ
ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํ๋ ์์ ์ ๋๋ค.
ex) ์ ๋ ํ ์คํธ, ํตํฉ ํ ์คํธ ์ถ๊ฐ
๋ฌธ์ํ ๊ด๋ จ ์์ ์ ๋๋ค.
ex) README, ์ฝ๋ ์ฃผ์, API ๋ฌธ์ ์ ๋ฐ์ดํธ
Issue์ ๋์ผํ๊ฒ ์์ฑํด์ฃผ์ธ์.
PR ์ ๋ชฉ์, develop ๋ธ๋์น์ mergeํ ๋ commit message๋ก ๋จ๊ฒ ๋๋ ๊ผญ! ์ ์ํด์ฃผ์ธ์.
- ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ์๋ฃ๋์ด์ผ ํ๋ ์์ ์
D-n๋ผ๋ฒจ์ ํตํด์ ์ ์ฉํด์ผ ํฉ๋๋ค. - ์ค์ค๋ก ์ค์๋๋ฅผ ํ๋จํด์,
D-0~D-3๋ด์์ ์ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค. - label์ ํ์ผ (๊ณตํด์ผ ์ ์ธ) 14์์ ์ค์ค๋ก ์ ๋ฐ์ดํธ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
PR Template์ ๋ง๊ฒ ์์ฑํด์ฃผ์ธ์.
- Related Issues
- ์์ ๋ด์ฉ
- ์์ ๊ฒฐ๊ณผ (์ ํ)
- ๋ฆฌ๋ทฐ ์ ์์ฒญ์ฌํญ (์ ํ)
Reviwer์ Reviewer ๋ชจ๋๋ฅผ ์ํด PR์ ์ ์ ํ ๊ท๋ชจ๋ฅผ ์ ์งํด์ฃผ์ธ์.
PR์ ๊ท๋ชจ๊ฐ ์์์ง๋ฉด, ๋ฆฌ๋ทฐ์ ์ง๋ ์์นํ๊ณ ์๋๋ ๋นจ๋ผ์ง๋๋ค ๐
- ์ผ๊ด๋ ์ํคํ ์ฒ๋ฅผ ์ ์งํ๊ณ ์๋์ง
- ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํ ์๊ฒฌ ์ ์
- ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ์ ์๋ ๊ฐ๋ฅ์ฑ ์ ์
- ๊ธฐ์ ์ ์ธ ์ง์, ๋ ธํ์ฐ ๊ณต์
- ํ์คํ ๋ฆฌ ์ ๋ฌ
ํ์ ๋ชจ๋๋ฅผ Reviewer๋ก ์ค์ ํด์ฃผ์ธ์. (๊ธฐ๋ณธ์ ์ผ๋ก CODEOWNERS ํ์ผ์ ์ํด ๋ฑ๋ก๋ฉ๋๋ค.)
- Reviewer ์ค ์ต์ 2๋ช ์ด approve ํ ๊ฒฝ์ฐ์๋ ๋๊ตฌ๋ merge ํ PR์ close ํ ์ ์์ต๋๋ค.
- ๋ฐ์๋์ง ๋ชปํ comment์ ๊ฒฝ์ฐ, Issue๋ฅผ ์์ฑํด์ ๋ค์ ํด๊ฒฐํด์ฃผ์ธ์. (P3 ์ฐธ๊ณ )
- Approve์๋ ์ฑ ์์ด ๋ฐ๋ฆ ๋๋ค.
- ํ์ผ (๊ณตํด์ผ ์ ์ธ) 14์์
D-n๋ผ๋ฒจ์ ๊ต์ฒดํด์ฃผ์ธ์. D-0์ด ๋ ํ์๋ ์๋ฌด๋ ๋ฆฌ๋ทฐ๋ฅผ ์ ๊ณตํ์ง ์์์ ๊ฒฝ์ฐ์๋, Discord์ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํด์ฃผ์ธ์.- ๊ธด๊ธํ ์์ ๋ฑ ์ฆ๊ฐ์ ์ธ ๋ฐ์์ด ํ์ํ ๊ฒฝ์ฐ,
D-0๋ผ๋ฒจ์ ๋ฌ๊ณ Discord์ Review๋ฅผ ์ง์ ์์ฒญํด์ฃผ์ธ์. Request Changes๋ฆฌ๋ทฐ์ ์ํ ์์ ์ ์ ์ธํ๊ณ ๋ ์ถ๊ฐ ์ปค๋ฐ์ ์์ ํด์ฃผ์ธ์.- ํน์๋ ๋์น ๋ถ๋ถ์ด ์์ด ์์ ์ด ํ์ํ ๊ฒฝ์ฐ,
Change to Draft๋ฅผ ํตํด ๋ช ์ํด์ฃผ์ธ์.
Pnย ๊ท์น์ ๋ง์ถฐ์ ๋ฆฌ๋ทฐ๋ฅผ ๋จ๊ฒจ์ฃผ์ธ์.
| ๋ ๋ฒจ | ์๋ฏธ | ๋ฑ ํฌ ์๋ฌ๋ ์ค๋ช | ์ฒ๋ฆฌ ๊ธฐ์ค |
|---|---|---|---|
| ๐ฅ P1 | ๊ผญ ๋ฐ์ํด ์ฃผ์ธ์ | ๋ฆฌ๋ทฐ์ด๋ PR์ ๋ด์ฉ์ด ์๋น์ค์ ์ค๋ํ ์ค๋ฅ๋ฅผ ๋ฐ์ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ ์ฌํ๊ณ ์๋ ๋ฑ ์ค๋ํ ์ฝ๋ ์์ ์ด ๋ฐ๋์ ํ์ํ๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ, P1 ํ๊ทธ๋ฅผ ํตํด ๋ฆฌ๋ทฐ ์์ฒญ์์๊ฒ ์์ ์ ์์ฒญํฉ๋๋ค. ๋ฆฌ๋ทฐ ์์ฒญ์๋ p1 ํ๊ทธ์ ๋ํด ๋ฆฌ๋ทฐ์ด์ ์์ฒญ์ ๋ฐ์ํ๊ฑฐ๋, ๋ฐ์ํ ์ ์๋ ํฉ๋ฆฌ์ ์ธ ์๊ฒฌ์ ํตํด ๋ฆฌ๋ทฐ์ด๋ฅผ ์ค๋ํ ์ ์์ด์ผ ํฉ๋๋ค. | ๐ง Request Changes |
| ๐ง P2 | ์ ๊ทน์ ์ผ๋ก ๊ณ ๋ คํด ์ฃผ์ธ์ | ์์ฑ์๋ P2์ ๋ํด ์์ฉํ๊ฑฐ๋ ๋ง์ฝ ์์ฉํ ์ ์๋ ์ํฉ์ด๋ผ๋ฉด ์ ํฉํ ์๊ฒฌ์ ๋ค์ด ํ ๋ก ํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. | ๐ง Request Changes |
| ๐จ P3 | ์ฌ๋งํ๋ฉด ๋ฐ์ํด ์ฃผ์ธ์ | ์์ฑ์๋ P3์ ๋ํด ์์ฉํ๊ฑฐ๋ ๋ง์ฝ ์์ฉํ ์ ์๋ ์ํฉ์ด๋ผ๋ฉด ๋ฐ์ํ ์ ์๋ ์ด์ ๋ฅผ ๋ค์ด ์ค๋ช ํ๊ฑฐ๋ ๋ค์์ ๋ฐ์ํ ๊ณํ์ ๋ช ์์ ์ผ๋ก(JIRA ํฐ์ผ ๋ฑ์ผ๋ก) ํํํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. Request changes ๊ฐ ์๋ Comment ์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค. | ๐ฌ Comment |
| ๐ฉ P4 | ๋ฐ์ํด๋ ์ข๊ณ ๋์ด๊ฐ๋ ์ข์ต๋๋ค | ์์ฑ์๋ P4์ ๋ํด์๋ ์๋ฌด๋ฐ ์๊ฒฌ์ ๋ฌ์ง ์๊ณ ๋ฌด์ํด๋ ๊ด์ฐฎ์ต๋๋ค. ํด๋น ์๊ฒฌ์ ๋ฐ์ํ๋ ๊ฒ ์ข์์ง ๊ณ ๋ฏผํด ๋ณด๋ ์ ๋๋ฉด ์ถฉ๋ถํฉ๋๋ค. | โ
Approve |
| ๐ฆ P5 | ๊ทธ๋ฅ ์ฌ์ํ ์๊ฒฌ์ ๋๋ค | ์์ฑ์๋ P5์ ๋ํด ์๋ฌด๋ฐ ์๊ฒฌ์ ๋ฌ์ง ์๊ณ ๋ฌด์ํด๋ ๊ด์ฐฎ์ต๋๋ค. | โ
Approve |
| ์ํ | ์ฌ์ฉ ์กฐ๊ฑด | ์ค๋ช | ํ์ ์กฐ์น |
|---|---|---|---|
| โ Approve | - ๊ธฐ๋ฅ์ด ์ ์ ๋์ํจ | ||
| - ์ฝ๋ ์คํ์ผ/๊ตฌ์กฐ ๋ฌธ์ ๊ฐ ์์ | - ๋ณํฉํด๋ ๋ฌด๋ฐฉํ ์ํ | ||
| - ์ฌ์ํ ๊ฐ์ ์ฌ์ง๋ Comment๋ก ๋ณ๋ ๋จ๊ธธ ์ ์์ | ๋ฐ๋ก Merge ๊ฐ๋ฅ. ํ์ ์ ๊ฐ์ ์๊ฒฌ์ Comment๋ก ๋จ๊น | ||
| ๐ด Request Changes | - ๋ช ๋ฐฑํ ๋ฌธ์ , ๋ ผ๋ฆฌ ์ค๋ฅ, ์ปจ๋ฒค์ ์๋ฐ ๋ฑ- ๋ณํฉ ์ ์ ๋ฐ๋์ ์์ ํ์ | - ๋ณํฉ์ ๋ง๋ ์์ค์ ์ค๋ฅ | |
| - ๋ฆฌ๋ทฐ์ด๊ฐ ๋ณด๊ธฐ์ ์์ ์์ด ํต๊ณผ ๋ถ๊ฐ | ๋ฐ๋์ ์์ ํ ๋ค์ ๋ฆฌ๋ทฐ ์์ฒญ. Merge ๊ธ์ง | ||
| ๐ก Comment | - ๋น์ฐจ๋จ ํผ๋๋ฐฑ- ์ ์, ์ง๋ฌธ, ๊ฐ์ ์์ด๋์ด ๋ฑ | - Merge๋ฅผ ๋ง์ง ์์ | |
| - ๋ฐ์ ์ฌ๋ถ๋ ์์ฑ์ ํ๋จ | ๋ฐ์์ด ํ์ํ๋ค๋ฉด Merge ํ ๋ณ๋ ์ด์ ์์ฑํ์ฌ ๊ด๋ฆฌ |
https://blog.banksalad.com/tech/banksalad-code-review-culture/
emoji Tag: Description์ ํ์์ด ๋ ๊ฑฐ์์.- ex. โจย Feat: sample commit
- ํ๊ทธ์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ์ ์ด์ฃผ์ธ์.
featโยFeatโญ
| ์ด๋ชจ์ง | ์ด๋ฆ (:gitmoji:) |
ํ๊ทธ | ์ค๋ช |
|---|---|---|---|
| โจ | :sparkles: |
feat |
์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
| ๐จ | :hammer: |
fix |
์ฌ์ฉ์์๊ฒ ์ํฅ์ ์ฃผ๋ ๊ธฐ๋ฅ ์์ |
| โป๏ธ | :recycle: |
refactor |
๋ฆฌํฉํ ๋ง (๊ธฐ๋ฅ ๋ณํ ์์ด ์ฝ๋ ๊ฐ์ ) |
| ๐ | :bug: |
bug |
๋ฒ๊ทธ ์์ |
| ๐๏ธ | :ambulance: |
hotfix |
๊ธด๊ธํ ๋ฌธ์ ์์ |
| ๐ | :lipstick: |
UI |
UI ๋ณ๊ฒฝ, CSS ์์ ๋ฑ |
| ๐จ | :art: |
style |
์ฝ๋ ํฌ๋งทํ , ์ธ๋ฏธ์ฝ๋ก ๋ฑ ์ฝ๋ ์ํฅ ์๋ ๋ณ๊ฒฝ |
| ๐ง | :wrench: |
config |
ํ๊ฒฝ ์ค์ , ๋น๋ ์ค์ ๋ฑ ์์ |
| โ๏ธ | :pencil2: |
typo |
์คํ, ๋ฌธ๊ตฌ ์์ |
| ๐ | :memo: |
docs |
๋ฌธ์(README, ์ฃผ์ ๋ฑ) ๋ณ๊ฒฝ |
| ๐ฌ | :speech_balloon: |
comment |
์ฃผ์ ์ถ๊ฐ/์ ๊ฑฐ (TODO, NOTE ๋ฑ) |
| ๐ฆ | :package: |
package |
๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์์กด์ฑ ์ถ๊ฐ |
| ๐ฅ | :fire: |
remove |
๋ถํ์ํ ์ฝ๋/ํ์ผ ์ญ์ |
| โ | :check: |
test |
ํ ์คํธ |
- ํ ์ค ๋น 72์ ์ด๋ด๋ก ์์ฑํด์ฃผ์ธ์. ์ฌ๋ฌ ํ๊ฒฝ์์์ ๊ฐ๋ ์ฑ์ ์ํจ์ด์์.
- ๋ณธ๋ฌธ์ ์ด ๊ธธ์ด์๋ ์ ํ์ด ์์ด์.
- "๋ฌด์์, ์" ๋ณ๊ฒฝํ๋์ง๋ฅผ ๋ฐ๋์ ํฌํจํด์ฃผ์ธ์.
- ๊ด๋ จ ์ด์๊ฐ ์๋ค๋ฉด ๋ช ์ํด์ฃผ์ ๋ ์ข์์. (Footer)
โจ Feat: ์ฌ์ฉ์ ํ๋กํ ํ์ด์ง ์ถ๊ฐ
- ์๋ก์ด ์ ์ ํ๋กํ ํ์ด์ง UI ๊ตฌํ
- ์ ์ ๋๋ค์, ๊ฐ์
์ผ, ์ต๊ทผ ํ๋ ํ์
- ์ถํ ํ๋ ๊ทธ๋ํ ์ถ๊ฐ ์์
- Resolves #42
- src
- app : App Router ์ฉ ํด๋์ ๋๋ค.
- features : ๋๋ฉ์ธ(๊ธฐ๋ฅ)๋ณ๋ก ์ฌ์ฉํ๋ ํ์ผ๋ค์, ํด๋๋ช
์ผ๋ก ๊ตฌ๋ถํด์ฃผ์ธ์.
- components : ์ปดํฌ๋ํธ๋ค์ด ์ ์๋ ํ์ผ์
๋๋ค.
- ๊ฐ ํด๋๋ช ์, ์ปดํฌ๋ํธ๋ช ๊ณผ ์ผ์นํ์ฌ์ผ ํฉ๋๋ค.
- ์ปดํฌ๋ํธ ๋ด์์ ์ฌ์ฉํ๋ type ๋ฐ storybook ํ์ผ์ ๊ฐ ์ปดํฌ๋ํธ ํด๋์ ์์นํ์ฌ์ผ ํ๋ฉฐ, ์๋์ ๋ช
๋ช
๋ฒ์ ์ค์ํ์ฌ์ผ ํฉ๋๋ค.
- storybook ํ์ผ์
*.stories.tsxํ์์ ์ฌ์ฉํด์ฃผ์ธ์. - type ํ์ผ์
*.types.tsํ์์ ์ฌ์ฉํด์ฃผ์ธ์.- type ํ์ผ ๋ด์๋ ํด๋น ์ปดํฌ๋ํธ์์ ํ์ฉ๋๋ type๋ง ์ ์ํด์ฃผ์ธ์.
- ๊ฐ์ ๋๋ฉ์ธ ๋ด์์ 3๊ฐ ์ด์์ ํ์ผ์์ ๊ณต์ฉ๋์ด์ผ ํ๋ type์ ๊ฒฝ์ฐ, ๋๋ฉ์ธ ๋ด์ types ํด๋ ๋ด์์ ์ ์ํด์ฃผ์ธ์.
- ์ถํ ์์ ์ฑ์ ์ํด, 2๊ฐ ํ์ผ์์๋ง ๊ณต์ฉ๋๋ ๊ฒฝ์ฐ ๋ถ๋ฆฌํ์ง ์์ต๋๋ค.
- ์ด ๊ฒฝ์ฐ, ๋ฐ๋์ ์ฃผ์์ผ๋ก ๊ณต์ฉ๋๋ ํ์ผ์ ๋ช ์ํด์ฃผ์ธ์.
- OR ! 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ, interface๋ก ์ ์ํ ๋ค extends ํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ์ ํ ๋ฐ๋.
- ์ถํ ์์ ์ฑ์ ์ํด, 2๊ฐ ํ์ผ์์๋ง ๊ณต์ฉ๋๋ ๊ฒฝ์ฐ ๋ถ๋ฆฌํ์ง ์์ต๋๋ค.
- component ํ์ผ์
PascalCaseFileName.tsxํ์์ ์ฌ์ฉํด์ฃผ์ธ์.
- storybook ํ์ผ์
- hooks : React Hook ํ์ผ๋ค์ ๋ชจ์๋๋ ํด๋์
๋๋ค.
- ํ์ผ๋ช
์ ๊ฒฝ์ฐ,
use๋ก ์์ํ๋, React์ ๊ท์น์ ๋ฐ๋ผ์ฃผ์ธ์. - hook ๋ด์์ ์ฌ์ฉํ๋ type์, ๋ณ๋์ ํ์ผ์ ์ ์ํด์ฃผ์ธ์.
- ํ์ผ๋ช
์
useSampleHook.types.ts์ ๊ฐ์ด ์ง์ด์ฃผ์ธ์.
- ํ์ผ๋ช
์
- React Query Function ๊ฐ์ ๊ฒฝ์ฐ,
- ํ์ผ๋ช
์ ๊ฒฝ์ฐ,
- apis : ํด๋น ๋๋ฉ์ธ์์ ํ์ฉ๋๋ api ํธ์ถ ํจ์๋ค์ด ์๋ ๊ณณ์
๋๋ค.
- ํ์์๋ HTTP method์ ๋ฐ๋ผ์ ํด๋๋ฅผ ๊ตฌ๋ถํด์ฃผ์ธ์.
- ๊ธฐ๋ฅ๋ณ๋ก ํ์ผ์ ๋ฌถ์ด, ๊ฐ ํ์ผ ๋ด์ ์ฌ๋ฌ๊ฐ์ API call ํจ์๊ฐ ์กด์ฌํ๋๋ก ํด์ฃผ์ธ์.
- ํ์ผ๋ช ์ kebab-case๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- components : ์ปดํฌ๋ํธ๋ค์ด ์ ์๋ ํ์ผ์
๋๋ค.
- common : ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๋ ํ์ผ๋ค์ ํฌํจํด์ฃผ์ธ์.
- components : ํ๋ก์ ํธ ์ ๋ฐ์์ ์ฌ์ฉ๋๋ ๊ณต์ฉ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํด์ฃผ์ธ์.
- ExampleComponent : ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๋ ํด๋์ ๊ฒฝ์ฐ, ์ปดํฌ๋ํธ๋ช ๊ณผ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํด์ฃผ์ธ์.
- components : ํ๋ก์ ํธ ์ ๋ฐ์์ ์ฌ์ฉ๋๋ ๊ณต์ฉ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํด์ฃผ์ธ์.
- assets : font ํ์ผ ๋ฑ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ์ธ์.
- app router ๋ด์ ํด๋๋ช ์ Next.js์ ๊ท์น์ ์ง์ผ์ฃผ์ธ์
- components ํด๋ ํ์์ ์ปดํฌ๋ํธ์ ๊ตฌ์ฑ์์๋ฅผ ํฌํจํ๋ ํด๋์ ๊ฒฝ์ฐ, ์ปดํฌ๋ํธ๋ช
๊ณผ ๋์ผํ๊ฒ ํด๋๋ช
์ ์์ฑํด์ฃผ์ธ์.
- storybook ํ์ผ์
*.stories.tsxํ์์ ์ฌ์ฉํด์ฃผ์ธ์. - type ํ์ผ์
*.types.tsํ์์ ์ฌ์ฉํด์ฃผ์ธ์. - component ํ์ผ์
PascalCaseFileName.tsxํ์์ ์ฌ์ฉํด์ฃผ์ธ์.
- storybook ํ์ผ์
- React์์ ์ ํด์ง ๊ท์น์ ์ฐ์ ํด์ ์ ์ฉํด์ฃผ์ธ์.
- ์ปดํฌ๋ํธ ํ์ผ์ PascalCase๋ฅผ ์ฌ์ฉํด์ฃผ์ธ์.
- Hook ํ์ผ์ ๊ฒฝ์ฐ์๋ camelCase๋ฅผ ์ฌ์ฉํด์ฃผ์ธ์.
- ๊ทธ ์ธ util ๋ฑ ๋ชจ๋ ํ์ผ์ kebab-case ๋ฅผ ์ฌ์ฉํด์ฃผ์ธ์.
- OS๋ git ๋จ์์ ๋์๋ฌธ์ ์ธ์ ๊ด๋ จ ํผ์ฉ์ ๋ง๊ธฐ ์ํจ์ ๋๋ค.
*.jsํ์ฅ์๋ฅผ ์ฌ์ฉํ์ง ๋ง์์ฃผ์ธ์.*.cjs๋ฐ*.mjsํ์ฅ์๋ฅผ ๋ฐ๋์ ๊ตฌ๋ถํด์ฃผ์ธ์.
- type/interface/enum์ PascalCase๋ก ์ง์ด์ฃผ์ธ์.
- Props, Data, Params, Payload ๋ฑ ์ ๋ฏธ์ด๋ฅผ ๋ถ์ฌ, ์๋ฏธ๋ฅผ ๋ช ํํ๊ฒ ํด์ฃผ์ธ์.
- enum ์์ฒด์ ๋ช ์นญ์ PascalCase์ด์ง๋ง, ๋ด๋ถ ๊ฐ์ CAPITAL_SNAKE_CASE๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ ์ญ์ผ๋ก ํ์ฉ๋๋ ๋งค์ง ๋๋ฒ(์์)๋ ๋ชจ๋ ๋๋ฌธ์๋ก, CAPITAL_SNAKE_CASE๋ก ์ง์ด์ฃผ์ธ์.
- ํ์ผ ๋ด๋ถ์์ ์ฌ์ฉํ๋ ์ง์ญ ์์๋ ์ผ๋ฐ ๋ณ์๋ช ์ผ๋ก ์ทจ๊ธํฉ๋๋ค. (camelCase ํ์ฉ)
- ํจ์๋ช ๋ฐ ๋ณ์๋ช ์ (ํจ์ํ ์ปดํฌ๋ํธ ์ ์ธ) camelCase๋ก ์ง์ด์ฃผ์ธ์.
- ์ฝ๋๋ฅผ ์ฒ์ ๋ณด๋ ์ฌ๋์ด๋ผ๋ ๊ฐ์๊ฐ ์ํํ๋ ์ญํ ์ ์ ์ ์๋๋ก, ๊ฐ๊ฒฐํ๊ณ ๋ช ํํ๊ฒ ์ง์ด์ฃผ์ธ์.
- ์ค์๋ง์ ํ์ฉํ์ง ์์ต๋๋ค. (๋๊ตฌ๋ ์์๋ณผ ์ ์๋ ๋จ์ถ์ด๋ง ์ฌ์ฉํด์ฃผ์ธ์. ex. Documentation โ Docs)
- CAPITAL_SNAKE_CASE ๋ก ์์ฑํด์ฃผ์ธ์.
- ๋ชฉ์ ์ด๋ ์๋น์ค๋ช ๋ฑ์ ์ ๋์ด๋ก ๋ถ์ฌ์ ์ถฉ๋์ ๋ฐฉ์งํด์ฃผ์ธ์.
- ํ๊ฒฝ๋ณ์ ์ค key, token, password ๋ฑ ๋ฏผ๊ฐํ ๊ฐ์ ์ ๋ฏธ์ด๋ก
*_SECRET๋ฑ์ ๋ถ์ฌ ๋ช ์ํด์ฃผ์ธ์. NEXT_PUBLIC_์ผ๋ก ์์ํ๋ ํ๊ฒฝ๋ณ์๋ ํด๋ผ์ด์ธํธ ์ธก์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ ์ํด์ฃผ์ธ์.
Prettier/ESLint์ ๋ช ์๋์ด ์๋ ๋ฐ๋ฅผ ์ฐ์ ์ํฉ๋๋ค.
- ๊ฒ์ฌ ๋์ : ts/tsx ํ์ผ๋ง lint์์ ๊ฒ์ฌํ๋๋ก ํฉ๋๋ค.
- Recommended Rule
- Next.js์ Core Web Vitals ๊ท์น ๋ฐ Typescript ์ ์ฉ ๊ท์น์ ์ ์ฉํฉ๋๋ค.
- Storybook ๊ถ์ฅ ๊ท์น์ ์ ์ฉํฉ๋๋ค.
- ESLint ๊ธฐ๋ณธ ๊ถ์ฅ ๊ท์น ๋ฐ TypeScript ESLint ๊ถ์ฅ ๊ท์น์ ํจ๊ป ์ ์ฉํฉ๋๋ค.
- Common JS ํ์ผ (
*.cjs) ์์๋ require ๊ตฌ๋ฌธ ์ฌ์ฉ์ ํ์ฉํฉ๋๋ค.
- React & JSX
- React, React Hooks ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํฉ๋๋ค.
- React version์ ์๋ ๊ฐ์งํฉ๋๋ค.
- JSX ํ์ผ ํ์ฅ์๋
*.tsx๋ง ํ์ฉํฉ๋๋ค. - React import ๊ตฌ๋ฌธ ํ์ ๊ท์น์ ๋นํ์ฑํํฉ๋๋ค.
- props-types ๊ฒ์ฌ๋ฅผ ๋นํ์ฑํ ํฉ๋๋ค. (TypeScript ์ฌ์ฉ ์ ๋ถํ์ํฉ๋๋ค.)
- ํจ์ํ ์ปดํฌ๋ํธ๋ ๋ฐ๋์ ํ์ดํ ํจ์๋ก ์์ฑํฉ๋๋ค.
- ๋ค์ฌ์ฐ๊ธฐ : space 2์นธ์ ์ฌ์ฉํฉ๋๋ค. (tab์ ์ฌ์ฉํ์ง ์์ต๋๋ค.)
- ํญ์ ์ธ๋ฏธ์ฝ๋ก ์ ์ฌ์ฉํฉ๋๋ค.
- Quote ์ฌ์ฉ ๊ท์น
- JS/TS:
'(Single Quote) - JSX/HTML ์์ฑ:
"(Double Quote)
- JS/TS:
- Trailing comma ๋ฅผ ์ฌ์ฉํฉ๋๋ค. (๊ฐ์ฒด ๋ง์ง๋ง์๋ ์ผํ ์ฌ์ฉ)
- print width : ํ ์ค์ ์ต๋ 100์ ๊น์ง ํ์ฉํฉ๋๋ค.
- bracket spacing : ๊ฐ์ฒด ์ฌ์ฉ ์ ์ค๊ดํธ ์์ชฝ์ ๊ณต๋ฐฑ์ ์ฌ์ฉํฉ๋๋ค.
- arrowParens : ํ์ดํ ํจ์ ์ฌ์ฉ ์, ๋งค๊ฐ๋ณ์์ ๊ดํธ๋ฅผ ํญ์ ์ฌ์ฉํฉ๋๋ค. (๋จ์ผ ๋งค๊ฐ๋ณ์์ผ ๋๋ ๊ดํธ ์๋ต ๋ถ๊ฐ๋ฅ)
- endOfLine : ์ด์์ฒด์ ์ ๋ง์ถ์ด ์ฌ์ฉํฉ๋๋ค.
- import ์์๋ฅผ ์ ๋ ฌํฉ๋๋ค. (ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ)
- ๊ฐ import ๊ทธ๋ฃน ์ฌ์ด์๋ ๋น ์ค์ ์ถ๊ฐํฉ๋๋ค.
- import specifier (์ค๊ดํธ ๋ด) ๋ ์ํ๋ฒณ ์์๋ก ์ ๋ ฌํฉ๋๋ค.
- ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
- ํ๋ ์์ํฌ (React, Next.js)
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- global style, static assets
@๋ก ์ ์๋ ๊ณตํต module๋ค- ๋๋ฉ์ธ ๋ชจ๋ (
features/*) - ๊ธฐํ src ํ์ ๊ฒฝ๋ก
- ์๋๊ฒฝ๋ก import
- tailwindcss class ์์๋ฅผ ์ ๋ ฌํฉ๋๋ค. (ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ)
- type/interface ์ฌ์ฉ ๊ตฌ๋ถ
- interface๋ฅผ ์ฐ์ ํ์ฌ ์ฌ์ฉํฉ๋๋ค.
- props๋ ๊ตฌ์กฐ๋ถํดํ ๋น ํ์ฌ ์ฌ์ฉํฉ๋๋ค.
- children ๋ํ ๋ช ์์ ์ผ๋ก ์ ์ธํ์ฌ ์ฌ์ฉํฉ๋๋ค.
useRouter๋์Link๋ฅผ ์ฌ์ฉํฉ๋๋ค.