HMRμ΄ μλνμ§ μμ
μ¦μ
νμΌμ μμ ν΄λ μλ²κ° μλμΌλ‘ μ¬μμλμ§ μμ΅λλ€.μμΈ
- HMR κ²½κ³(boundary)κ° μ¬λ°λ₯΄κ² μ€μ λμ§ μμ
- νμΌ κ°μμκ° νμΌ λ³κ²½μ κ°μ§νμ§ λͺ»ν¨
- μν μμ‘΄μ±μΌλ‘ μΈν HMR μ€ν¨
ν΄κ²° λ°©λ²
1. κ°λ° μλ² μ¬μμ
2. HMR κ²½κ³ νμΈ
HMR κ²½κ³λhmr-hook-register.tsμμ μ€μ λ©λλ€:
3. νμΌ κ°μμ νλ μ¦κ° (Linux/macOS)
4. .gitignore ν¨ν΄ νμΈ
HMRμ΄node_modulesλ dist κ°μ λλ ν 리λ₯Ό κ°μνλ©΄ μ±λ₯ λ¬Έμ κ° λ°μν μ μμ΅λλ€.
νμΌ λ³κ²½ ν μλ¬ λ°μ
μ¦μ
νμΌμ μμ νλ©΄ HMRμ΄ λμνμ§λ§ μλ¬κ° λ°μν©λλ€:μμΈ
- μν μμ‘΄μ± (circular dependency)
- λμ importκ° μ¬λ°λ₯΄κ² μ²λ¦¬λμ§ μμ
- ESM/CommonJS νΌμ©
ν΄κ²° λ°©λ²
1. μν μμ‘΄μ± νμΈ
2. λμ import νμΈ
HMR κ²½κ³ λ΄μμλ λμ importλ₯Ό νΌνμΈμ:HMR ν νμ μλ¬
μ¦μ
HMRμ΄ λμν ν TypeScript νμ μλ¬κ° λ°μν©λλ€:μμΈ
TypeScript μλ²κ° HMR λ³κ²½μ¬νμ μΈμνμ§ λͺ»νμ΅λλ€.ν΄κ²° λ°©λ²
1. TypeScript μλ² μ¬μμ
VSCode:2. μλν° μ¬μμ
3. tsconfig.json νμΈ
HMR μ±λ₯ μ ν
μ¦μ
νμΌμ μ μ₯ν λλ§λ€ HMRμ΄ λ리거λ μλ²κ° λ©μΆ₯λλ€.μμΈ
- λ무 λ§μ νμΌμ΄ HMR κ²½κ³μ ν¬ν¨λ¨
- λ¬΄κ±°μ΄ μ°μ°μ΄ λͺ¨λ λ‘λ© μμ μ μ€νλ¨
- λ©λͺ¨λ¦¬ λμ
ν΄κ²° λ°©λ²
1. HMR κ²½κ³ μ΅μ ν
hmr-hook-register.tsμμ κ²½κ³ ν¨ν΄ μμ :
2. λͺ¨λ μ΄κΈ°ν μ΅μ ν
λ¬΄κ±°μ΄ μ°μ°μ lazy loadingμΌλ‘:3. λ©λͺ¨λ¦¬ νλ‘νμΌλ§
HMR κ²½κ³ μ€μ μ€λ₯
μ¦μ
μμΈ
HMR κ²½κ³ ν¨ν΄μ΄ μ¬λ°λ₯΄μ§ μμ΅λλ€.ν΄κ²° λ°©λ²
hmr-hook-register.tsμμ μ¬λ°λ₯Έ glob ν¨ν΄ μ¬μ©:
νΉμ νμΌλ§ HMRμ΄ μλνμ§ μμ
μ¦μ
λλΆλΆμ νμΌμ HMRμ΄ μ μλνλλ°, νΉμ νμΌλ§ λ³κ²½ μ μ¬μμλμ§ μμ΅λλ€.μμΈ
- νμΌμ΄ HMR κ²½κ³ ν¨ν΄κ³Ό μΌμΉνμ§ μμ
- νμΌμ΄ λͺ μμ μΌλ‘ μ μΈλ¨
- νμΌμ΄ λ€λ₯Έ λͺ¨λμμ μΊμλ¨