
π― λΆμ€ν μ΄ νλ‘μ νΈμ κΈ°λ°μ CRAλ‘ μ€μ νκ³ , μ΄κΈ° ν΄λ ꡬ쑰λ₯Ό ꡬμ±ν©λλ€.
λμ€μ μΌλ‘ λ리 μ¬μ©λλ CRAλ‘ νλ‘μ νΈλ₯Ό μμν©λλ€. μ΄ν Viteλ‘ μ ννλ κ³Όμ μ μ΄λ ΅μ§ μκΈ° λλ¬Έμ, μ°μ CRA νκ²½μμ Reactμ TypeScriptλ₯Ό νμ΅ν©λλ€.
npx create-react-app . --template typescript

π REACT-BOOK-STORE/
βββ π node_modules/
βββ π public/
βββ π src/
β βββ π api/
β βββ π components/
β βββ π hooks/
β βββ π models/
β βββ π pages/
β βββ π utils/
β βββ App.test.tsx
β βββ App.tsx
β βββ index.tsx
β βββ react-app-env.d.ts
β βββ setupTests.ts
βββ .gitignore
βββ package-lock.json
βββ package.json
βββ README.md
βββ tsconfig.json
pages : λΌμ°νΈμ λμνλ νμ΄μ§ μ»΄ν¬λνΈ(컨ν
μ΄λ)
components : κ³΅ν΅ μ»΄ν¬λνΈ, κ° νμ΄μ§μμ μ¬μ©λλ μ»΄ν¬λνΈ
utils : κ³΅ν΅ μ νΈ ν¨μ
hooks: 컀μ€ν
ν
μ μ ν΄λ
model : νμ
μ μλ μΈν°νμ΄μ€
api : api μ°λμ μν fetcher λ±
scripts νλͺ©μ νλ‘μ νΈ μ€νμ μν λͺ
λ Ήμ΄ λ¨μΆν€(μ€ν¬λ¦½νΈ)λ₯Ό μ μνλ λΆλΆμ
λλ€.
{
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"typecheck": "tsc --noEmit --skipLibCheck"
},
}
start : κ°λ°μ© λ‘컬 μλ²λ₯Ό μ€νν©λλ€.npm start
build : μ ν리μΌμ΄μ
μ λ°°ν¬μ©μΌλ‘ μ΅μ νλ μ μ νμΌλ‘ λΉλnpm run build
test : κΈ°λ³Έμ μΌλ‘ Jestλ₯Ό μ¬μ©ν΄ ν
μ€νΈλ₯Ό μ€νnpm test
eject : CRA(Create React App)λ μ¨κ²¨μ§ μ€μ μ λͺ¨λ λ°μΌλ‘ κΊΌλ΄μ μ§μ μμ ν μ μκ² ν΄μ€λλ€.npm run eject
typecheck : TypeScriptμ νμ
κ²μ¬λ§ μνν©λλ€.
tsc : TypeScript μ»΄νμΌλ¬λ‘ ts νμΌμ js νμΌλ‘ λ³νμν΅λλ€.
--noEmit : μ€μ JavaScript νμΌμ μμ±νμ§ μκ³ , μ€λ‘μ§ νμ
μ€λ₯λ§ νμΈν©λλ€.
--skipLibCheck : node_modulesμ μλ μΈλΆ λΌμ΄λΈλ¬λ¦¬μ νμ
κ²μ¬λ μλ΅ν©λλ€.
npm run typecheck
π€ μ μ΄λ€ 건
npmλ§ μ°κ³ , μ΄λ€ 건npm runμ μ°λκ±ΈκΉ?
npm runμscriptsνλͺ©μ μ μλ μ¬μ©μ μ€ν¬λ¦½νΈλ₯Ό μ€νν λ μμ λΆμ¬ μ¬μ©νλ κΈ°λ³Έ λͺ λ Ήμ΄μ λλ€.
start,test,stop,restartλ npmμμ μμ λ ν€μλλΌrunμ΄ μμ΄λ μλνκΈ° λλ¬Έμ λλ€.
μ€ν¬λ¦½νΈ λͺ λ Ήμ΄λ₯Ό μ§μ λ§λ€μ΄μ λ£μ΄ μ¬μ©ν΄λ³΄λ©΄μ npmκ³Ό CRA κ΅¬μ‘°κ° μ΅μν΄μ§κ³ μλ κ² κ°λ€.