React, TypeScript, Viteλ₯Ό κΈ°λ°μΌλ‘ νλ©°, μ μ§λ³΄μμ±μ μν΄ κΈ°λ₯ λ¨μ(Feature-based) μν€ν μ²λ₯Ό λ°λ¦ λλ€.
μ΄ νλ‘μ νΈλ Node.js v20 (LTS) μ΄μ νκ²½μ κΆμ₯ν©λλ€.
node -vgit clone git@github.com:el-dmu/Expo2026-Front.git
cd νμΌμ΄λ¦ μμ§ λ―Έμ μ
λλ€.npm installTip: νμλ€κ³Ό μ νν λμΌν λ²μ μ μ€μΉνλ €λ©΄
npm ciλͺ λ Ήμ΄λ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
λ£¨νΈ λλ ν 리μ .env νμΌμ μμ±νκ³ , ν λ
Έμ
(Notion)μ 곡μ λ ν€ κ°μ μ
λ ₯νμΈμ.
(μμ)
VITE_API_BASE_URL=http://localhost:8080/api/v1
VITE_SOCKET_URL=http://localhost:8080npm run devλΈλΌμ°μ μμ http://localhost:5173μΌλ‘ μ μνμ¬ νμΈν©λλ€.
npm run build
npm run previewμ°λ¦¬λ κΈ°λ₯(Feature) μ€μ¬μ μν€ν μ²λ₯Ό μ¬μ©ν©λλ€. κ΄λ ¨λ λ‘μ§(UI, Hook, API)μ΄ νλμ ν΄λμ λͺ¨μ¬ μμ΄μΌ μ μ§λ³΄μκ° μ½μ΅λλ€.
src/
βββ assets/ # μ΄λ―Έμ§, ν°νΈ λ± μ μ 리μμ€
βββ components/ # μ μ κ³΅μ© UI / λ μ΄μμ
- Colocation: νΉμ κΈ°λ₯μμλ§ μ°μ΄λ μ»΄ν¬λνΈλ
features/κΈ°λ₯λͺ /componentsμμ λ‘λλ€. - Barrel Exports:
index.tsλ₯Ό νμ©νμ¬ import κ²½λ‘λ₯Ό κΉλνκ² μ μ§ν©λλ€. - Absolute Import:
../../λμ@/features/userμ κ°μ΄ μ λ κ²½λ‘(@)λ₯Ό μ¬μ©ν©λλ€.
main: λ°°ν¬ κ°λ₯ν μμ λ²μ develop: κ°λ° μ€μΈ μ½λ (PR λμ)
π λΈλμΉ λͺ
λͺ
κ·μΉ: νμ
/κΈ°λ₯λͺ
_μμ±μ
λκ° μμ
μ€μΈμ§ λͺ
νν μκΈ° μν΄ κΈ°λ₯λͺ
λ€μ μμ±μ μ΄λ¦μ λΆμ
λλ€.
| νμ | μ€λͺ | μ¬μ© μμ |
|---|---|---|
feat |
μλ‘μ΄ κΈ°λ₯ μΆκ° | feat/login_Minsik(λ³ΈμΈ μ΄λ¦) |
fix |
λ²κ·Έ μμ | fix/home-error_Minsik(λ³ΈμΈ μ΄λ¦) |
design |
CSS λ± μ€νμΌ λ³κ²½ | design/main-color_Minsik(λ³ΈμΈ μ΄λ¦) |
refactor |
μ½λ 리ν©ν λ§ | refactor/api-logic_Minsik(λ³ΈμΈ μ΄λ¦) |
docs |
λ¬Έμ μμ | docs/readme_Minsik(λ³ΈμΈ μ΄λ¦) |
μ»€λ° λ©μμ§λ Conventional Commits κ·μΉμ λ°λ¦ λλ€.
feat: λ‘κ·ΈμΈ νμ΄μ§ νΌλΈλ¦¬μ±fix: λ§€μΉ νν°λ§ μ€λ₯ μμ docs: 리λλ―Έ μμ
μ°λ¦¬λ μ½λ νμ§μ μ μ§νκΈ° μν΄ PR(Pull Request)μ μ¬λ¦¬κΈ° μ , λ‘컬μμ μκ° κ²μ¬λ₯Ό μνν΄μΌ ν©λλ€.
β PR μ μ€ν λͺ λ Ήμ΄ μμ μ λ§μΉκ³ μ격 μ μ₯μμ μ¬λ¦¬κΈ° μ , ν°λ―Έλμ μλ λͺ λ Ήμ΄λ€μ μ λ ₯νμ¬ μλ¬κ° μλμ§ νμΈν©λλ€.
| λͺ λ Ήμ΄ | μν | μ€λͺ |
|---|---|---|
npm run type-check |
νμ κ²μ¬ | TypeScript λ¬Έλ² μ€λ₯λ νμ λΆμΌμΉλ₯Ό μ‘μλ λλ€. (μ»΄νμΌμ νμ§ μμ) |
npm run lint |
μ€νμΌ κ²μ¬ | ESLint κ·μΉ(λ―Έμ¬μ© λ³μ, 컨벀μ λ±) μλ° μ¬νμ νμΈν©λλ€. |
# μ€ν μμ
npm run type-check && npm run lintQ. npm install μ μλ¬κ° λ°μν΄μ.
A. Node λ²μ μ΄ λ§λμ§ νμΈνμΈμ. (node -v >= 20). nvm use 20μ κΆμ₯ν©λλ€. μΊμ λ¬Έμ λΌλ©΄ npm cache clean --force ν λ€μ μλν΄ λ³΄μΈμ.
Q. import κ²½λ‘μμ @/κ° μΈμμ΄ μ λΌμ.
A. VS Codeλ₯Ό μ¬μμνκ±°λ Ctrl + Shift + P (Win) / Cmd + Shift + P (Mac) λ₯Ό λλ¬ λͺ
λ Ή νλ νΈλ₯Ό μ΄κ³ TypeScript: Restart TS serverλ₯Ό μ€νν΄ λ³΄μΈμ.