HMR์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ์—์„œ ์ „์ฒด ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ์—†์ด ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ๋งŒ ๊ต์ฒดํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๊ฐœ๋ฐœ ์ค‘ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ฆ‰์‹œ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ˜์˜๋œ๋‹ค.

ํ•ด๋‹น ๊ฐœ๋…์ด ํ•„์š”ํ•œ ์ด์œ 

  • ์ „์ฒด ์ƒˆ๋กœ๊ณ ์นจ์˜ ๋ฌธ์ œ: ์ฝ”๋“œ ์ˆ˜์ • โ†’ ํŽ˜์ด์ง€ ๋ฆฌ๋กœ๋“œ โ†’ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ(state) ์ดˆ๊ธฐํ™”
  • ํผ์— ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ, ์Šคํฌ๋กค ์œ„์น˜, ์—ด๋ ค ์žˆ๋˜ ๋ชจ๋‹ฌ ๋“ฑ์ด ์ „๋ถ€ ์‚ฌ๋ผ์ง
  • ์•ฑ์ด ์ปค์งˆ์ˆ˜๋ก ๋ฆฌ๋กœ๋“œ ์‹œ๊ฐ„๋„ ๊ธธ์–ด์ง
  • HMR์€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜๋ฉด์„œ ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๋งŒ ๊ต์ฒด

AS-IS (์ „์ฒด ์ƒˆ๋กœ๊ณ ์นจ)

์ฝ”๋“œ ์ˆ˜์ • โ†’ ์ „์ฒด ํŽ˜์ด์ง€ ๋ฆฌ๋กœ๋“œ โ†’ ์ƒํƒœ ์ดˆ๊ธฐํ™”

์˜ˆ: 3๋‹จ๊ณ„ ํผ์˜ 3๋‹จ๊ณ„์—์„œ CSS ์ˆ˜์ •
โ†’ ๋ฆฌ๋กœ๋“œ โ†’ 1๋‹จ๊ณ„๋ถ€ํ„ฐ ๋‹ค์‹œ ์ง„ํ–‰ํ•ด์•ผ ํ•จ
โ†’ ์•ฑ์ด ํด์ˆ˜๋ก ๋ฆฌ๋กœ๋“œ ์‹œ๊ฐ„๋„ ์ฆ๊ฐ€

TO-BE (HMR)

์ฝ”๋“œ ์ˆ˜์ • โ†’ ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ๋งŒ ๊ต์ฒด โ†’ ์ƒํƒœ ์œ ์ง€

์˜ˆ: 3๋‹จ๊ณ„ ํผ์˜ 3๋‹จ๊ณ„์—์„œ CSS ์ˆ˜์ •
โ†’ CSS๋งŒ ๊ต์ฒด โ†’ 3๋‹จ๊ณ„ ์ƒํƒœ ๊ทธ๋Œ€๋กœ ์œ ์ง€
โ†’ ์•ฑ ํฌ๊ธฐ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋น ๋ฅธ ์—…๋ฐ์ดํŠธ

๋™์ž‘ ์›๋ฆฌ (webpack ๊ธฐ์ค€)

1. ํŒŒ์ผ ์ˆ˜์ • ๊ฐ์ง€
2. Compiler๊ฐ€ "Update" ์ƒ์„ฑ
   โ”œโ”€โ”€ Updated Manifest (JSON): ๋ณ€๊ฒฝ๋œ ์ฒญํฌ ๋ชฉ๋ก
   โ””โ”€โ”€ Updated Chunks (JS): ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ์˜ ์ƒˆ ์ฝ”๋“œ
3. HMR Runtime์ด ์—…๋ฐ์ดํŠธ ์ ์šฉ
   โ”œโ”€โ”€ check(): ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋‹ค์šด๋กœ๋“œ โ†’ ๋ณ€๊ฒฝ๋œ ์ฒญํฌ ํ™•์ธ
   โ””โ”€โ”€ apply(): ๋ณ€๊ฒฝ ๋ชจ๋“ˆ ๊ต์ฒด โ†’ accept ํ•ธ๋“ค๋Ÿฌ ์‹คํ–‰
4. ํ•ด๋‹น ๋ชจ๋“ˆ์— HMR ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์—†์œผ๋ฉด โ†’ ๋ถ€๋ชจ๋กœ ๋ฒ„๋ธ”์—…
5. ์—”ํŠธ๋ฆฌ๊นŒ์ง€ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์—†์œผ๋ฉด โ†’ ์ „์ฒด ๋ฆฌ๋กœ๋“œ๋กœ ํด๋ฐฑ

Vite์—์„œ์˜ HMR

Vite์˜ HMR์€ ๊ธฐ์กด webpack HMR๊ณผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค:

ํŠน์„ฑwebpack HMRVite HMR
๊ธฐ๋ฐ˜๋ฒˆ๋“ค๋œ ์ฝ”๋“œ ์œ„์—์„œ ๋™์ž‘Native ESM ์œ„์—์„œ ๋™์ž‘
์†๋„์•ฑ์ด ์ปค์ง€๋ฉด ๋А๋ ค์ง์•ฑ ํฌ๊ธฐ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋น ๋ฆ„
๋ฒ”์œ„๋ณ€๊ฒฝ๋œ ์ฒญํฌ ์ „์ฒด ์žฌ๋นŒ๋“œ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ ~ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒฝ๊ณ„๊นŒ์ง€๋งŒ ๋ฌดํšจํ™”
์บ์‹ฑ๋ณ„๋„ ์„ค์ • ํ•„์š”HTTP 304 + Cache-Control ์ž๋™ ํ™œ์šฉ

Vite HMR์˜ ํ•ต์‹ฌ: ESM ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ์ˆ˜์ •๋œ ํŒŒ์ผ๊ณผ ๊ทธ ๊ฒฝ๊ณ„ ์‚ฌ์ด์˜ ๋ชจ๋“ˆ๋งŒ ๋ฌดํšจํ™”ํ•œ๋‹ค. ์•ฑ์— ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ชจ๋“ˆ์ด ์žˆ์–ด๋„ HMR ์—…๋ฐ์ดํŠธ ์†๋„๋Š” ์ผ์ •ํ•˜๊ฒŒ ๋น ๋ฅด๋‹ค.

์ฐธ๊ณ  ๋ฌธ์„œ