tsconfig.jsonμ κ°μ§κ³ μμ΅λλ€. κ° νκ²½μ μ΅μ νλ μ€μ μ μ¬μ©ν©λλ€.
νλ‘μ νΈ κ΅¬μ‘°
my-project/ - api/ - tsconfig.json # API μλ²μ© μ€μ - tsconfig.schemas.json # μ€ν€λ§ μμ±μ© -
tsconfig.types.json # νμ
μμ±μ© - web/ - tsconfig.json # React μ±μ© μ€μ - tsconfig.node.json #
Vite μ€μ μ©
APIμ Webμ κ°κ° λ
립μ μΈ TypeScript νλ‘μ νΈμ
λλ€. μ€μ μ΄ μλ‘ λΆλ¦¬λμ΄ μμ΅λλ€.
API μλ² μ€μ
κΈ°λ³Έ tsconfig.json
api/tsconfig.json
μ£Όμ μ΅μ μ€λͺ
- λͺ¨λ μ€μ
- λ°μ½λ μ΄ν°
- Strict λͺ¨λ
- μΆκ° 체ν¬
- Node.jsμ
nodeλͺ¨λ λμ λ²λ€λ¬ λͺ¨λ μ¬μ© - Viteμ esbuildκ° λͺ¨λμ ν΄μνλ λ°©μκ³Ό μΌμΉ
package.jsonμexportsνλ μ§μ
νμ₯ μ€μ νμΌλ€
Sonamu APIλ μ½λ μμ±μ μν΄ μΆκ° tsconfig νμΌμ μ¬μ©ν©λλ€.tsconfig.schemas.json - μ€ν€λ§ μμ±μ©
tsconfig.schemas.json - μ€ν€λ§ μμ±μ©
api/tsconfig.schemas.json
sonamu.generated.tsνμΌ μμ±- Entity μ€ν€λ§ νμ μμ±
- DB μ€ν€λ§ β TypeScript νμ λ³ν
tsconfig.types.json - νμ
μμ±μ©
tsconfig.types.json - νμ μμ±μ©
api/tsconfig.types.json
- API μλ΅ νμ μμ±
- Request/Response νμ μ μ
- νλ‘ νΈμλμ νμ 곡μ
Web (React) μ€μ
web/tsconfig.json
APIμμ μ°¨μ΄μ
APIλ
moduleResolution: "bundler" (μλ¬Έμ), Webμ moduleResolution: "Bundler" (λλ¬Έμ)λ₯Ό
μ¬μ©ν©λλ€. λ λ€ Viteκ° λ²λ€λ¬ λ°©μμΌλ‘ λͺ¨λμ ν΄μν©λλ€.Path Mapping
νμ μ²΄ν¬ μ€ν
- API
- Web
- μ 체
μΌλ°μ μΈ λ¬Έμ ν΄κ²°
λͺ¨λμ μ°Ύμ μ μμ
λͺ¨λμ μ°Ύμ μ μμ
μ¦μ:μμΈ:
node_modulesκ° μ€μΉλμ§ μμ- μλͺ»λ import κ²½λ‘
λ°μ½λ μ΄ν° μλ¬
λ°μ½λ μ΄ν° μλ¬
μ¦μ:μμΈ:
experimentalDecoratorsκ° λΉνμ±νλ¨
JSX μλ¬ (Web)
JSX μλ¬ (Web)
μ¦μ:μμΈ:React 17+ νμ μ€μ
jsxμ΅μ μ΄ μ€μ λμ§ μμ
Path Mapping μλ μ ν¨
Path Mapping μλ μ ν¨
μ¦μ:μμΈ:Vite μ€μ λ νμ:
pathsμ€μ λλ½baseUrlμ€μ νμ
vite.config.ts
컀μ€ν°λ§μ΄μ§
μΆκ° λΌμ΄λΈλ¬λ¦¬ νμ
λ μ격ν 체ν¬
include/exclude ν¨ν΄
λ€μ λ¨κ³
νμ 체ν¬
Strict λͺ¨λμ νμ
μ²΄ν¬ μ΅μ
μ νμ΅νμΈμ
Path Mapping
μ λ κ²½λ‘ importλ₯Ό μ€μ νμΈμ
Entity μ μ
Entityλ₯Ό μ μνμΈμ
API νμ
API μμ²/μλ΅ νμ
μ μ μνμΈμ