Skip to main content
Sonamu ν”„λ‘œμ νŠΈλŠ” TypeScript둜 μž‘μ„±λ˜λ©°, API와 Web 각각 독립적인 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

μ£Όμš” μ˜΅μ…˜ μ„€λͺ…

moduleResolution: β€œbundler”
  • Node.js의 node λͺ¨λ“œ λŒ€μ‹  λ²ˆλ“€λŸ¬ λͺ¨λ“œ μ‚¬μš©
  • Vite와 esbuildκ°€ λͺ¨λ“ˆμ„ ν•΄μ„ν•˜λŠ” 방식과 일치
  • package.json의 exports ν•„λ“œ 지원
moduleResolution: "node"λ₯Ό μ‚¬μš©ν•˜λ©΄ Vite와 μΆ©λŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν™•μž₯ μ„€μ • νŒŒμΌλ“€

Sonamu APIλŠ” μ½”λ“œ 생성을 μœ„ν•΄ μΆ”κ°€ tsconfig νŒŒμΌμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
api/tsconfig.schemas.json
μš©λ„:
  • sonamu.generated.ts 파일 생성
  • Entity μŠ€ν‚€λ§ˆ νƒ€μž… 생성
  • DB μŠ€ν‚€λ§ˆ β†’ TypeScript νƒ€μž… λ³€ν™˜
μ‚¬μš© μ‹œμ :
api/tsconfig.types.json
μš©λ„:
  • API 응닡 νƒ€μž… 생성
  • Request/Response νƒ€μž… μ •μ˜
  • ν”„λ‘ νŠΈμ—”λ“œμ™€ νƒ€μž… 곡유
μ‚¬μš© μ‹œμ :

Web (React) μ„€μ •

web/tsconfig.json

APIμ™€μ˜ 차이점

APIλŠ” moduleResolution: "bundler" (μ†Œλ¬Έμž), Web은 moduleResolution: "Bundler" (λŒ€λ¬Έμž)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ‘˜ λ‹€ Viteκ°€ λ²ˆλ“€λŸ¬ λ°©μ‹μœΌλ‘œ λͺ¨λ“ˆμ„ ν•΄μ„ν•©λ‹ˆλ‹€.

Path Mapping

μ ˆλŒ€ 경둜둜 importν•  수 μžˆμŠ΅λ‹ˆλ‹€:
μžμ„Έν•œ λ‚΄μš©μ€ Path Mapping을 μ°Έκ³ ν•˜μ„Έμš”.

νƒ€μž… 체크 μ‹€ν–‰

개발 μ€‘μ—λŠ” --watch λͺ¨λ“œλ‘œ μ‹€μ‹œκ°„ νƒ€μž… 체크λ₯Ό ꢌμž₯ν•©λ‹ˆλ‹€.

일반적인 문제 ν•΄κ²°

증상:
원인:
  • node_modulesκ°€ μ„€μΉ˜λ˜μ§€ μ•ŠμŒ
  • 잘λͺ»λœ import 경둜
ν•΄κ²°:
증상:
원인:
  • experimentalDecoratorsκ°€ λΉ„ν™œμ„±ν™”λ¨
ν•΄κ²°:
증상:
원인:
  • jsx μ˜΅μ…˜μ΄ μ„€μ •λ˜μ§€ μ•ŠμŒ
ν•΄κ²°:
React 17+ ν•„μˆ˜ μ„€μ •
증상:
원인:
  • paths μ„€μ • λˆ„λ½
  • baseUrl μ„€μ • ν•„μš”
ν•΄κ²°:
Vite 섀정도 ν•„μš”:
vite.config.ts

μ»€μŠ€ν„°λ§ˆμ΄μ§•

μΆ”κ°€ 라이브러리 νƒ€μž…

더 μ—„κ²©ν•œ 체크

이 μ˜΅μ…˜λ“€μ€ κΈ°μ‘΄ μ½”λ“œμ™€ ν˜Έν™˜μ„± 문제λ₯Ό μΌμœΌν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

include/exclude νŒ¨ν„΄

λ‹€μŒ 단계

νƒ€μž… 체크

Strict λͺ¨λ“œμ™€ νƒ€μž… 체크 μ˜΅μ…˜μ„ ν•™μŠ΅ν•˜μ„Έμš”

Path Mapping

μ ˆλŒ€ 경둜 importλ₯Ό μ„€μ •ν•˜μ„Έμš”

Entity μ •μ˜

Entityλ₯Ό μ •μ˜ν•˜μ„Έμš”

API νƒ€μž…

API μš”μ²­/응닡 νƒ€μž…μ„ μ •μ˜ν•˜μ„Έμš”