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 ๊ฒฝ๊ณ ํจํด๊ณผ ์ผ์นํ์ง ์์
- ํ์ผ์ด ๋ช ์์ ์ผ๋ก ์ ์ธ๋จ
- ํ์ผ์ด ๋ค๋ฅธ ๋ชจ๋์์ ์บ์๋จ