๐ ๏ธ ๊ธฐ์ ์คํ๐ ์ฝ๋ ์ปจ๋ฒค์
๐ง๐ปโ๐ป eslint, prettierโก๏ธ code ๊ท์น๐ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐโ๏ธ github โฅ ๋ธ๋์น ์ ๋ต๐ ์ปค๋ฐ ์ปจ๋ฒค์
๐ ๏ธ ๊ธฐ์ ์คํ
๋น๋๊ธฐ ๋ฐ ์๋ฌ ์ฒ๋ฆฌ๋ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ ?
- ์ข ํ
- [ suspense ์ปดํฌ๋ํธ + errorboundary ์ปดํฌ๋ํธ ] ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ดํ๋ ๊ฒ์ด ์ข์๋ณด์ธ๋ค !
- errorboundary ์ปดํฌ๋ํธ๊ฐ ๊ฐ์ธ๋ ํํ
โ ๋น๋๊ธฐ๋
suspense ์ปดํฌ๋ํธ
๋ก ์ฒ๋ฆฌ, ์๋ฌ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ errorboundary ์ปดํฌ๋ํธ
์ ๋ํด์ ์ถ๊ฐ ์กฐ์ฌ๊ฐ ํ์๐ ์ฝ๋ ์ปจ๋ฒค์
๐ง๐ปโ๐ป eslint, prettier
eslint, prettier ์ถ์ฒํด์ฃผ๋๊ฑฐ ๊น์ง + prettier์์ ์ค์ ์ถ๊ฐํ๊ธฐ (tap ์นธ ์, ์์ฑ ์ค ๋ฐ๊ฟ ๋ฑ๋ฑ)
- ํ๋ฐ์ดํ (โ โ) ์ฌ์ฉ
โก๏ธ code ๊ท์น
- ์ปดํฌ๋ํธ ์์ฑํ ๋๋ ํ์ดํ ํจ์ ์ฌ์ฉ
- if๋ฌธ curly๋ฃฐ ์ ์ฉ
๋ค์ด๋ฐ
- type, ์ปดํฌ๋ํธ, ํ์ผ๋ช
โ PascalCase (ex.
MainPage.tsx
)
- ํจ์, ๋ณ์(state ๋ฑ)๋ช โ camelCase
- ํจ์๋ช - ํจ์ ๋ค์ด๋ฐ์ ๋์ฌ + ๋ช ์ฌ (ex. onChange, getUserData โฆ)
- ํจ์๋ช , ๋ณ์๋ช ์์ฑ ์, ํจ์ถ์ด ๋ง๊ณ ํ๋ค์ : btn โ button
- ์์๋ช
โ UPPER_SNAKE_CASE (ex.
API_KEY
)
์ด๋ฒคํธ ํธ๋ค๋ฌ
- ์ด๋ฒคํธ ๋ฐ์ ์ ๋์ํ๋ ํจ์๋ค โ on~~ (ex.
onBackMove
)
css
- font-size : rem
- widht, height : px, vw, vh (100%๊ฐ ์๋ %๋ ์ง์)
- margin, padding : px
styled
๋ถ๋ถ์ ์ปดํฌ๋ํธ ์๋์ ์์ฑํ๊ธฐ
type
interface
์ฌ์ฉ
- alias ์ ๋ ๊ฒฝ๋ก(๊ฒฝ๋ก ๋ณ์นญ) โ /src = @
- API ์๋ต ํ์ ์์น
- ์ฌ์ฌ์ฉ์ฑ ๋์ ๊ฒ์ type.ts ํด๋์ ๊ด๋ฆฌ
- nullish ์ฐ์ฐ์
- ์ผ๋จ ์ฌ์ฉํ๋, PR ๋ ๋ ผ์ (๋์ ์ ์ ๋ณด์ผ ๊ฒฝ์ฐ ์์ฐ๋ ๋ฐฉํฅ์ผ๋ก ์กฐ์ )
- ์ผํญ์ฐ์ฐ์, ์ถ์ฝ ํํ(&&) vs if๋ฌธ
- JSX ๋ด๋ถ์์ ํ์ฐ์ ์ผ๋ก ์ผํญ์ฐ์ฐ์, ์ถ์ฝ ํํ(&&)
- JSX ์ธ๋ถ, ์ฆ ํจ์๋ฅผ ์ ์ํ ๋๋ PR ๋ ๋ ผ์
- ์ผํญ์ฐ์ฐ์ ์ค์ฒฉ ๊ธ์ง
- if๋ฌธ โ ๊ฐ๋ฅํ๋ฉด Early Return
- curly-rule ์ฌ์ฉ
React ์ปดํฌ๋ํธ ํ์
- ๋ฆฌ์กํธ v18๋ก ๋์ด์ค๋ฉด์
React.FC
orprops & ๋ฐํ ํ์ ์ ์ง์ ์ง์
ํ๋ ํํ๋ก ํ์ดํ ํด์ค์ผ ํ๋ค.
โ React ์ปดํฌ๋ํธ ํ์
์ React.FC์ ์ฌ์ฉ
const Welcom: React.FC<WelcomeProps> = ({ name }) => { ... } // ๊ทผ๋ฐ ์ฑ ์ ๋์์๋ ์์์์๋ ๋ณ๋๋ก ์ปดํฌ๋ํธ ํ์ ์ ์ง์ ํด์ฃผ์ง ์์
๐ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
์์
์ค ํ์์ ๋ฐ๋ผ ์ ๊ธฐ์ ์ผ๋ก ๋ณ๋
(์๋๋ ์์๋ก ๊ฐ์ ธ์จ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ) โโโ src โโโ assets | โ โโโ components | | โโโ Post // default ์ปดํฌ๋ํธ์์ ๋ถ๋ฆฌ๊ฐ ๋ฐ์ํ๋ฉด ์ฌ๊ธฐ์ ๋ฃ๊ธฐ | | โโโ index.tsx // default ์ปดํฌ๋ํธ โ โโโ types // ๋ช ์ธ + ํ ๋ฒ ์ด์ ์ฐ์ด๋ ํ์ ํ์ผ | โโโ pages | โโโ constants // ์คํ์ผ ์์, ๊ทธ๋ฅ ์์๋ ํ์ผ๋ก ๋ถ๋ฆฌ! | โโโ hooks | โโโ apis | โโโ atoms | โโโ utils | โโโ styles | โโโ storage | โโโ App.tsx | โโโ index.tsx โโโ
โ๏ธ github
โฅ ๋ธ๋์น ์ ๋ต
github flow ๊ธฐ๋ฐ
main
: ๋ฐฐํฌ ์ ์ฉ ๋ธ๋์นdevelop
: ๊ฐ๋ฐ ์ ์ฉ ๋ธ๋์นpull ๋ฐ์ ๋๋ develop๋ก ๋ถํฐ ๋ฐ์ผ๋ฉฐ, develop์์ ๋ธ๋์น ๋ถ๊ธฐ๊ฐ ์ผ์ด๋๋ค.
- ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋๋
feature/๊ธฐ๋ฅ๋ช
- ๋ฌด์ธ๊ฐ๋ฅผ ์์ ํ ๋๋
fix/๊ธฐ๋ฅ๋ช
- ์คํ์ผ ์์ ํ ๋๋
style/๊ธฐ๋ฅ๋ช
- ์ฃผ์ ์ ๊ฑฐ, ๋ฑ๋ฑ ๋ฌธ์ ์์
docs/๊ธฐ๋ฅ๋ช
- ์ด์๋ฅผ ์ฌ์ฉํ๋ค๋ฉด
feature/#์ด์๋ฒํธ/๊ธฐ๋ฅ๋ช
- ๊ธฐ๋ฅ ๋ช
์์ฑ ์, ๋จ์ด๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ
-
์ผ๋ก ๊ตฌ๋ถํ๋ค.
PR ๋ณด๋ผ ๋ feature/@ โ develop ๋ก ๋ณด๋ธ๋ค. โ PR ๋ณด๋ด๊ณ ๋ธ๋์น๋ฅผ ์ญ์ ํ๋ ๋ฐฉ์
- ์ค์ง์ ์ผ๋ก ๋ ํฌ์ ๋จ์์๋ ๋ธ๋์น๋
main, develop
develop
๋ธ๋์น์์ ์์
๋ด์ฉ ๊ฒ์ํ ํ ๋ฐฐํฌ ์ main
๋ธ๋์น๋ก ๋จธ์ง ๐ ์ปค๋ฐ ์ปจ๋ฒค์
gitmoji + ํ
ํ๋ฆฟ ๊ธฐ๋ฐ commit ์์ฑ (+ ์ด์ ๋ฒํธ)
- ์ปค๋ฐ ๋ฉ์ธ์ง ํํ (ํ ํ๋ฆฟ ํํ์ ๋ง๊ฒ ์์ ํ์)
โจ ํ์ด๋จธ ๊ธฐ๋ฅ ์ถ๊ฐ - ๋ฉ์ธ ํ์ด์ง์ ํ์ด๋จธ ๊ธฐ๋ฅ์ ์ถ๊ฐ ํ์์ต๋๋ค. ์ด์ ๋ฒํธ : #6
- ๊น๋ชจ์ง ์ฌ์ฉ๋ฒ
- ์ปค๋ฐ๊ณผ ์ด์ ์ฐ๊ฒฐํ๊ธฐ
์๋ ๋ช
๋ น์ด ์ฌ์ฉ์ ์ปค๋ฐ template ์ ์ฉ ๊ฐ๋ฅ.
ํ์ผ ์ด๋ฆ์ .gitmessage.txt
๋ก ๋ณ๊ฒฝ(ํ์ผ ๋ช
์์ ์จ์ ์ค์ํฉ๋๋ค)ํด์ฃผ์๊ณ ํ์ผ์ด์๋ ๋๋ ํ ๋ฆฌ์์ ๋ช
๋ น์ด๋ฅผ ์คํํด์ฃผ์๋ฉด ๋ฉ๋๋ค. or ๋๋ ํ ๋ฆฌ๊น์ง ์ ์ด์ฃผ์๋ฉด๋ฉ๋๋ค
git config --global commit.template .gitmessage.txt
git config --global commit.template /test/study/.gitmessage.txt
ํด๋ ๋์๋ฌธ์ ๊ตฌ๋ถ์ ์ํ์ฌ
git config core.ignorecase false
์ผ๋ก ๋์๋ฌธ์ ๊ตฌ๋ถ ๊ฐ๋ฅํ๊ฒ ์ค์ ํgit rm -r --cached .
๋ก ํ์ฌ๊ฒฝ๋ก์ ์บ์๋ฅผ ์ง์์ฃผ์ ๋ค add, commit ๋ฑ ์งํํด์ฃผ์๋ฉด ๋ฉ๋๋ค์ฌ๋&๊น ์ฐ๋