μμ€ λ§΅μ΄λ?
μμ€ λ§΅(Source Map)μ μ»΄νμΌλ JavaScript μ½λλ₯Ό μλ³Έ TypeScript μ½λλ‘ λ§€ννλ νμΌμ λλ€. μ΄λ₯Ό ν΅ν΄ μλ¬ μ€ν νΈλ μ΄μ€μ λλ²κ±°μμ μλ³Έ TypeScript μ½λλ₯Ό λ³Ό μ μμ΅λλ€. νμ©:- μλ¬ μ€ν νΈλ μ΄μ€μμ μλ³Έ TypeScript μμΉ νμΈ
- λλ²κ±°μμ TypeScript μ½λμ λΈλ μ΄ν¬ν¬μΈνΈ μ€μ
- νλ‘λμ μλ¬λ₯Ό μλ³Έ μ½λμ λ§€ν
μμ€ λ§΅ νμ±ν
tsconfig.json μ€μ
inlineSourceMap vs sourceMap
μλ¬ μ€ν νΈλ μ΄μ€
μμ€ λ§΅ μμ΄
μμ€ λ§΅ μμ λ
Node.jsμμ μμ€ λ§΅ μ¬μ©
βenable-source-maps νλκ·Έ
package.json:
tsx μ¬μ© (κΆμ₯)
VSCode λλ²κ±° μ€μ
launch.json
λλ²κΉ λ¨κ³
-
λΈλ μ΄ν¬ν¬μΈνΈ μ€μ
- TypeScript νμΌ(
.ts)μμ μ€ λ²νΈ μΌμͺ½ ν΄λ¦
- TypeScript νμΌ(
-
λλ²κ±° μμ
- F5 λλ βRun and Debugβ ν¨λμμ μ€ν
-
λ³μ κ²μ¬
- λΈλ μ΄ν¬ν¬μΈνΈμμ λ©μΆλ©΄ λ³μ κ° νμΈ
- Watch ν¨λμμ ννμ νκ°
-
λ¨κ³λ³ μ€ν
- F10: Step Over (λ€μ μ€)
- F11: Step Into (ν¨μ λ΄λΆλ‘)
- Shift+F11: Step Out (ν¨μ λ°μΌλ‘)
νλ‘λμ μμ€ λ§΅
보μ κ³ λ €μ¬ν
μλ¬ μΆμ μλΉμ€ μ°λ
μμ€ λ§΅μ Sentry κ°μ μλ¬ μΆμ μλΉμ€μ μ λ‘λ:μμ€ λ§΅ λ¬Έμ ν΄κ²°
1. μμ€ λ§΅μ΄ μμ±λμ§ μμ
νμΈ μ¬ν:2. μ€ν νΈλ μ΄μ€κ° μ¬μ ν .js νμΌμ κ°λ¦¬ν΄
μμΈ: Node.jsκ° μμ€ λ§΅μ μΈμνμ§ λͺ»ν¨ ν΄κ²°:3. VSCode λλ²κ±°κ° μλνμ§ μμ
νμΈ μ¬ν:.vscode/launch.jsonμ¬μ€μ - TypeScript μλ² μ¬μμ:
Cmd+Shift+Pβ βTypeScript: Restart TS Serverβ - λλ²κ±° μ¬μμ
4. μλͺ»λ λΌμΈ λ²νΈ
μμΈ: μμ€ λ§΅κ³Ό μ½λκ° λκΈ°νλμ§ μμ ν΄κ²°:μμ€ λ§΅ κ²μ¦
μλ κ²μ¦
source-map ν¨ν€μ§λ‘ κ²μ¦
λΈλΌμ°μ μμ μμ€ λ§΅
Vite κ°λ° μλ²
Viteλ μλμΌλ‘ μμ€ λ§΅μ μμ±νκ³ μ 곡ν©λλ€:Chrome DevTools
-
μμ€ ν μ΄κΈ°
- F12 β Sources ν
-
TypeScript νμΌ νμΈ
webpack://λλsrc/μλ.tsνμΌ
-
λΈλ μ΄ν¬ν¬μΈνΈ μ€μ
- TypeScript νμΌμμ μ€ λ²νΈ ν΄λ¦
-
λλ²κΉ
- νμ΄μ§ μλ‘κ³ μΉ¨νμ¬ λΈλ μ΄ν¬ν¬μΈνΈ λλ¬
Best Practices
1. νμ κ°λ° νκ²½μμ νμ±ν
2. Gitμμ .map νμΌ μ μΈ
3. νλ‘λμ μμ μ νμ μ¬μ©
4. μλ¬ λͺ¨λν°λ§ ν΅ν©
νλ‘λμ μμλ μμ€ λ§΅μ μλ¬ μΆμ μλΉμ€μλ§ μ 곡:κ΄λ ¨ λꡬ
1. source-map-support
λ°νμμ μμ€ λ§΅ μλ μ μ©:2. @esbuild-kit/core-utils
esbuild κΈ°λ° λΉλ λꡬμ μμ€ λ§΅ μ§μ:3. Chrome DevTools
- Elements νμμ μ»΄νμΌλ CSSλ₯Ό μλ³Έ SCSS/LESSλ‘ λ§€ν
- Network νμμ μμ€ λ§΅ λ€μ΄λ‘λ νμΈ
- Consoleμμ μλ³Έ νμΌ λ§ν¬ ν΄λ¦