μλ°μ€ν¬λ¦½νΈ λͺ¨λ ν« λ¦¬λ‘λ©(HMR)μ΄ κ°λ° μν¬νλ‘μ°λ₯Ό νκΈ°μ μΌλ‘ κ°μ νκ³ , μλ‘κ³ μΉ¨ μκ°μ μ€μ΄λ©°, μμ°μ±μ λμ΄λ λ°©λ²μ μμ보μΈμ. μ€μ©μ μΈ μμ μ μ€μ νμ λ΄μ μ’ ν© κ°μ΄λμ λλ€.
μλ°μ€ν¬λ¦½νΈ λͺ¨λ ν« λ¦¬λ‘λ©: κ°λ° ν¨μ¨μ± κ·ΉλννκΈ°
λΉ λ₯΄κ² λ³ννλ μΉ κ°λ° μΈκ³μμ ν¨μ¨μ±μ κ°μ₯ μ€μν©λλ€. μ¬μν μ½λλ₯Ό λ³κ²½ν νμλ νμ΄μ§λ₯Ό λ€μ λ‘λνλλΌ μλ§μ μκ°μ κΈ°λ€λ¦¬λ κ²μ λ§€μ° λ΅λ΅νκ³ μμ°μ±μ ν¬κ² μ ν΄ν μ μμ΅λλ€. λ°λ‘ μ΄λ μλ°μ€ν¬λ¦½νΈ λͺ¨λ ν« λ¦¬λ‘λ©(HMR)μ΄ κ΅¬μΈμ£Όμ²λΌ λ±μ₯ν©λλ€. HMRμ μ¬μ©νλ©΄ μ 체 νμ΄μ§λ₯Ό μλ‘κ³ μΉ¨ν νμ μμ΄ μ€ν μ€μΈ μ ν리μΌμ΄μ μ λͺ¨λμ μ λ°μ΄νΈν μ μμ΄, κ°λ° μν¬νλ‘μ°λ₯Ό νκΈ°μ μΌλ‘ κ°μ νκ³ λ³κ²½ μ¬νμ μ€μκ°μΌλ‘ νμΈν μ μμ΅λλ€.
λͺ¨λ ν« λ¦¬λ‘λ©(HMR)μ΄λ 무μμΈκ°?
λͺ¨λ ν« λ¦¬λ‘λ©(HMR)μ μ 체 νμ΄μ§λ₯Ό μλ‘κ³ μΉ¨νμ§ μκ³ μ€ν μ€μΈ μ ν리μΌμ΄μ μ μ½λλ₯Ό μ λ°μ΄νΈν μ μκ² ν΄μ£Όλ κΈ°λ₯μ λλ€. λͺ¨λμ λ³κ²½νλ©΄ HMRμ΄ μ λ°μ΄νΈλ₯Ό κ°λ‘μ± μ€ν μ€μΈ μ ν리μΌμ΄μ μ μ§μ μ μ©ν©λλ€. κ·Έ κ²°κ³Ό κ±°μ μ¦κ°μ μΈ μ λ°μ΄νΈκ° μ΄λ£¨μ΄μ Έ μ½λ λ³κ²½μ ν¨κ³Όλ₯Ό λ°λ‘ νμΈν μ μμ΅λλ€. μ΄λ μ 체 νμ΄μ§λ₯Ό μλ‘κ³ μΉ¨νμ¬ μ ν리μΌμ΄μ μνλ₯Ό μκ³ μν¬νλ‘μ°λ₯Ό μ€λ¨μν¬ μ μλ κΈ°μ‘΄μ λΌμ΄λΈ 리λ‘λ©λ³΄λ€ ν¨μ¬ κ°μ λ λ°©μμ λλ€.
μ΄λ κ² μκ°ν΄λ³΄μΈμ: μ¬λ¬ νλκ° μλ 볡μ‘ν νΌμ μμ νκ³ μλ€κ³ μμν΄λ³΄μΈμ. HMRμ΄ μλ€λ©΄ λ²νΌμ CSS ν μ€μ λ³κ²½ν λλ§λ€ μ 체 νΌμ΄ λ€μ λ‘λλμ΄μΌ νκ³ λͺ¨λ λ°μ΄ν°λ₯Ό λ€μ μ λ ₯ν΄μΌ ν©λλ€. HMRμ μ¬μ©νλ©΄ λ²νΌμ μ€νμΌλ§ μ λ°μ΄νΈλκ³ νΌ λ°μ΄ν°λ κ·Έλλ‘ μ μ§λμ΄ μμ€ν μκ°μ μ μ½ν μ μμ΅λλ€.
HMR μ¬μ©μ μ΄μ
- κ°λ° μλ ν₯μ: μ 체 νμ΄μ§ μλ‘κ³ μΉ¨μ μμ HMRμ μ½λ λ³κ²½ κ²°κ³Όλ₯Ό νμΈνλ λ° κ±Έλ¦¬λ μκ°μ ν¬κ² μ€μ¬μ€λλ€. μ΄λ₯Ό ν΅ν΄ λ λΉ λ₯΄κ² λ°λ³΅νκ³ λ ν¨μ¨μ μΌλ‘ μ€νν μ μμ΅λλ€. UI μμλ₯Ό λ―ΈμΈ μ‘°μ νκ±°λ 볡μ‘ν μνΈ μμ©μ λλ²κΉ ν λ μ μ½λλ μκ°μ μμν΄λ³΄μΈμ!
- μ ν리μΌμ΄μ μν μ μ§: κΈ°μ‘΄μ λΌμ΄λΈ 리λ‘λ©κ³Ό λ¬λ¦¬ HMRμ μ ν리μΌμ΄μ μ μνλ₯Ό 보쑴ν©λλ€. μ¦, μ½λλ₯Ό λ³κ²½ν λ μ§ν μν©μ μμ μΌλ €κ° μμ΅λλ€. μ΄λ 볡μ‘ν μν κ΄λ¦¬κ° μλ μ ν리μΌμ΄μ μμ μμ ν λ νΉν μ μ©ν©λλ€.
- λλ²κΉ κ²½ν κ°μ : HMRμ μ ν리μΌμ΄μ μ νμ¬ μνλ₯Ό μμ§ μκ³ μ½λ λ³κ²½μ ν¨κ³Όλ₯Ό μ€μκ°μΌλ‘ λ³Ό μ μκ² νμ¬ λλ²κΉ μ λ μ½κ² λ§λλλ€. μ΄λ₯Ό ν΅ν΄ λ²κ·Έλ₯Ό λ λΉ λ₯΄κ³ ν¨κ³Όμ μΌλ‘ 격리νκ³ μμ ν μ μμ΅λλ€.
- κ°λ°μ μμ°μ± ν₯μ: κ°λ° μλ ν₯μ, μ ν리μΌμ΄μ μν 보쑴, λλ²κΉ κ²½ν κ°μ μ μ‘°ν©μ κ°λ°μ μμ°μ±μ ν¬κ² ν₯μμν΅λλ€. νμ΄μ§ μλ‘κ³ μΉ¨μ κΈ°λ€λ¦¬λ λμ μ½λ μμ±κ³Ό λ¬Έμ ν΄κ²°μ μ§μ€ν μ μμ΅λλ€.
- μ£Όμ λΆμ° κ°μ: μ§μμ μΈ μ 체 νμ΄μ§ μλ‘κ³ μΉ¨μ λ§€μ° μ°λ§ν μ μμΌλ©°, νλ¦μ κΉ¨κ³ μ§μ€νκΈ° μ΄λ ΅κ² λ§λλλ€. HMRμ μ΄λ¬ν λ°©ν΄ μμλ₯Ό μ΅μννμ¬ λΉλ©΄ν μμ μ μ§μ€ν μ μλλ‘ ν©λλ€.
HMRμ μλ λ°©μ
HMRμ νλ‘μΈμ€λ μΌλ°μ μΌλ‘ λ€μ λ¨κ³λ₯Ό ν¬ν¨ν©λλ€:- μ½λ λ³κ²½: μ½λμ λͺ¨λμ λ³κ²½ν©λλ€.
- λͺ¨λ λ²λ€λ¬ κ°μ§: λͺ¨λ λ²λ€λ¬(μ: Webpack, Parcel, Vite)κ° λ³κ²½ μ¬νμ κ°μ§ν©λλ€.
- μ»΄νμΌ: λ²λ€λ¬κ° λ³κ²½λ λͺ¨λ(κ·Έλ¦¬κ³ μ μ¬μ μΌλ‘ κ·Έ μμ‘΄μ±)μ λ€μ μ»΄νμΌν©λλ€.
- HMR μλ²: λ²λ€λ¬μ HMR μλ²κ° μ λ°μ΄νΈλ λͺ¨λμ λΈλΌμ°μ λ‘ νΈμν©λλ€.
- ν΄λΌμ΄μΈνΈ μΈ‘ μ λ°μ΄νΈ: λΈλΌμ°μ μ HMR ν΄λΌμ΄μΈνΈκ° μ λ°μ΄νΈλ₯Ό μμ νκ³ μ 체 μλ‘κ³ μΉ¨ μμ΄ μ€ν μ€μΈ μ ν리μΌμ΄μ μ μ μ©ν©λλ€. μ λ°μ΄νΈλ₯Ό μ μ©νλ ꡬ체μ μΈ λ©μ»€λμ¦μ νλ μμν¬μ λ³κ²½ μ¬νμ μ±κ²©μ λ°λΌ λ€λ¦ λλ€. μ΄λ μ»΄ν¬λνΈλ₯Ό κ΅μ²΄νκ±°λ, μ€νμΌμ μ λ°μ΄νΈνκ±°λ, ν¨μλ₯Ό λ€μ μ€ννλ κ²μ ν¬ν¨ν μ μμ΅λλ€.
HMRμ λ§λ²μ μ ν리μΌμ΄μ μ λλ¨Έμ§ λΆλΆμ κ·Έλλ‘ λκ³ νμν λΆλΆλ§ μΈκ³Όμ μΌλ‘ μ λ°μ΄νΈνλ λ₯λ ₯μ μμ΅λλ€. μ΄λ₯Ό μν΄μλ μ λ°μ΄νΈκ° μ ννκ³ ν¨μ¨μ μΌλ‘ μ μ©λλλ‘ λͺ¨λ λ²λ€λ¬μ ν΄λΌμ΄μΈνΈ μΈ‘ μ½λ κ°μ κΈ΄λ°ν νλ ₯μ΄ νμν©λλ€.
HMRμ μ§μνλ μΈκΈ° λͺ¨λ λ²λ€λ¬
λͺλͺ μΈκΈ° μλ λͺ¨λ λ²λ€λ¬λ€μ νλ₯ν HMR μ§μμ μ 곡ν©λλ€. λ€μμ κ°μ₯ λ리 μ¬μ©λλ λͺ κ°μ§ μ΅μ μ λλ€:Webpack
Webpackμ κ°λ ₯νκ³ κ³ λλ‘ κ΅¬μ± κ°λ₯ν λͺ¨λ λ²λ€λ¬λ‘, webpack-dev-serverλ₯Ό ν΅ν΄ κ²¬κ³ ν HMR μ§μμ μ 곡ν©λλ€. Webpackμ HMRμ νμ±ννκΈ° μν΄ μ½κ°μ ꡬμ±μ΄ νμνμ§λ§, κ·Έ μ μ°μ± λλΆμ 볡μ‘ν νλ‘μ νΈμμ μΈκΈ° μλ μ νμ
λλ€.
Webpack μ€μ μμ:
Webpackμμ HMRμ νμ±ννλ €λ©΄ μΌλ°μ μΌλ‘ λ€μμ΄ νμν©λλ€:
webpack-dev-serverλ₯Ό κ°λ° μμ‘΄μ±μΌλ‘ μ€μΉν©λλ€.webpack-dev-serverμ€μ μhot: trueλ₯Ό μΆκ°ν©λλ€.- Webpackμ
HotModuleReplacementPluginμ μ¬μ©ν©λλ€.
λ€μμ webpack.config.js νμΌμ μΌλΆμ
λλ€:
const webpack = require('webpack');
module.exports = {
// ... λ€λ₯Έ μ€μ λ€
devServer: {
hot: true,
// ... λ€λ₯Έ devServer μ€μ λ€
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
// ... λ€λ₯Έ νλ¬κ·ΈμΈλ€
],
};
Parcel
Parcelμ λ³λ μ€μ μμ΄ λ°λ‘ HMRμ μ§μνλ μ λ‘ κ΅¬μ±(zero-configuration) λ²λ€λ¬μ
λλ€. Parcelμ λ¨μμ±κ³Ό μ¬μ© νΈμμ±μΌλ‘ μ λͺ
νμ¬, μκ·λͺ¨ νλ‘μ νΈλ κ°μνλ μ€μ μ μ νΈνλ κ°λ°μμκ² νλ₯ν μ νμ
λλ€. Parcelκ³Ό ν¨κ» HMRμ μ¬μ©νλ €λ©΄ parcel index.htmlμ μ€ννκΈ°λ§ νλ©΄ λ©λλ€.
Vite
Viteλ λ€μ΄ν°λΈ ES λͺ¨λμ νμ©νκ³ λλλλ‘ λΉ λ₯Έ HMRμ μ 곡νλ νλμ μΈ λΉλ λꡬμ λλ€. Viteμ HMRμ μλμ ν¨μ¨μ±μΌλ‘ μ μλ €μ Έ μμ΄ ν¬κ³ 볡μ‘ν μ ν리μΌμ΄μ μμ μΈκΈ° μλ μ νμ λλ€. Viteμ HMR μ κ·Ό λ°©μμ Webpackκ³Ό κ·Όλ³Έμ μΌλ‘ λ€λ₯΄λ©°, λ λΉ λ₯Έ μ λ°μ΄νΈλ₯Ό μν΄ λΈλΌμ°μ μ λ€μ΄ν°λΈ λͺ¨λ μμ€ν μ μμ‘΄ν©λλ€. Viteλ λ³κ²½λ λͺ¨λλ§ λ€μ λΉλνλ―λ‘, νΉν λκ·λͺ¨ νλ‘μ νΈμμ HMR μκ°μ΄ ν¨μ¬ λΉ¨λΌμ§λλ€.
Viteμ HMRμ μΌλ°μ μΌλ‘ Viteλ₯Ό μ¬μ©νμ¬ μ νλ‘μ νΈλ₯Ό μμ±ν λ μλμΌλ‘ ꡬμ±λ©λλ€. λ³΄ν΅ μλ ꡬμ±μ΄ νμνμ§ μμ΅λλ€.
νλ μμν¬λ³ κ³ λ €μ¬ν
HMRμ κΈ°λ³Έ μ리λ λμΌνκ² μ μ§λμ§λ§, ꡬ체μ μΈ κ΅¬ν μΈλΆ μ¬νμ μ¬μ© μ€μΈ μλ°μ€ν¬λ¦½νΈ νλ μμν¬μ λ°λΌ λ€λ₯Ό μ μμ΅λλ€.React
React μ ν리μΌμ΄μ
μ μ’
μ’
react-hot-loaderμ κ°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅νκ±°λ Create React App λ° Next.jsμ κ°μ λꡬμμ μ 곡νλ λ΄μ₯ HMR μ§μμ ν΅ν΄ HMRμ μ¬μ©ν©λλ€. μ΄λ¬ν λꡬλ μ’
μ’
HMR ꡬμ±μ λμ μ²λ¦¬ν΄μ£Όλ―λ‘ μ½κ² μμν μ μμ΅λλ€.
Create React App μ¬μ© μμ:
Create React App(CRA)μ κΈ°λ³Έμ μΌλ‘ HMRμ΄ νμ±νλμ΄ μ 곡λ©λλ€. HMRμ΄ μλνλλ‘ μ무κ²λ ꡬμ±ν νμκ° μμ΅λλ€. npm start λλ yarn startλ₯Ό μ¬μ©νμ¬ κ°λ° μλ²λ₯Ό μμνκΈ°λ§ νλ©΄ HMRμ΄ μλμΌλ‘ νμ±νλ©λλ€.
Vue.js
Vue.js λν νλ₯ν HMR μ§μμ μ 곡ν©λλ€. Vue CLIλ HMRμ΄ νμ±νλ λ΄μ₯ κ°λ° μλ²λ₯Ό μ 곡ν©λλ€. Vueμ λ¨μΌ νμΌ μ»΄ν¬λνΈ(.vue νμΌ)λ μ»΄ν¬λνΈμ ν
νλ¦Ώ, μ€ν¬λ¦½νΈ λλ μ€νμΌ λ³κ²½ μ¬νμ λ
립μ μΌλ‘ ν« λ¦¬λ‘λν μ μμ΄ HMRμ νΉν μ ν©ν©λλ€.
Vue CLI μ¬μ© μμ:
Vue CLI(vue create my-project)λ₯Ό μ¬μ©νμ¬ μ Vue νλ‘μ νΈλ₯Ό μμ±νλ©΄ HMRμ΄ μλμΌλ‘ ꡬμ±λ©λλ€. npm run serve λλ yarn serveλ₯Ό μ¬μ©νμ¬ κ°λ° μλ²λ₯Ό μμνλ©΄ HMRμ΄ νμ±νλ©λλ€.
Angular
Angularλ Angular CLIλ₯Ό ν΅ν΄ HMR μ§μμ μ 곡ν©λλ€. --hmr νλκ·Έμ ν¨κ» κ°λ° μλ²λ₯Ό μ€ννμ¬ HMRμ νμ±νν μ μμ΅λλ€: ng serve --hmr.
HMR λ¬Έμ ν΄κ²°
HMRμ΄ κ°λ° μν¬νλ‘μ°λ₯Ό ν¬κ² ν₯μμν¬ μ μμ§λ§, νμ μμ‘°λ‘μ΄ κ²½νμ μλλλ€. λ€μμ λͺ κ°μ§ μΌλ°μ μΈ λ¬Έμ μ ν΄κ²° λ°©λ²μ λλ€:- HMRμ΄ μλνμ§ μμ: λͺ¨λ λ²λ€λ¬μ νλ μμν¬κ° HMRμ λ§κ² μ¬λ°λ₯΄κ² ꡬμ±λμλμ§ νμΈνμΈμ. κ΅¬μ± νμΌμ λ€μ νμΈνκ³ νμν λͺ¨λ μμ‘΄μ±μ΄ μ€μΉλμλμ§ νμΈνμΈμ. λ¨μλ₯Ό μ 곡ν μ μλ μ€λ₯ λ©μμ§κ° μλμ§ λΈλΌμ°μ μ½μμ νμΈνμΈμ.
- HMR λμ μ 체 νμ΄μ§ μλ‘κ³ μΉ¨: HMRμ΄ μ λλ‘ κ΅¬μ±λμ§ μμκ±°λ μ½λμ HMRμ΄ μ¬λ°λ₯΄κ² μλνλ κ²μ λ°©ν΄νλ μ€λ₯κ° μμ λ λ°μν μ μμ΅λλ€. ꡬμ±μ κ²ν νκ³ λΈλΌμ°μ μ½μμμ μ€λ₯ λ©μμ§λ₯Ό μ°Ύμ보μΈμ.
- μ ν리μΌμ΄μ μν μμ€: HMRμ μ ν리μΌμ΄μ μνλ₯Ό 보쑴νλλ‘ μ€κ³λμμ§λ§ νμ μλ²½νμ§λ μμ΅λλ€. 볡μ‘ν μν κ΄λ¦¬λ μ€μν λ°μ΄ν° ꡬ쑰 λ³κ²½μ λλλ‘ μν μμ€λ‘ μ΄μ΄μ§ μ μμ΅λλ€. μν μ§μμ±μ κ°μ νκΈ° μν΄ Reduxλ Vuexμ κ°μ μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬ μ¬μ©μ κ³ λ €νμΈμ.
- CSSκ° μ λ°μ΄νΈλμ§ μμ: λλλ‘ CSS λ³κ²½ μ¬νμ΄ HMRκ³Ό ν¨κ» μ¦μ λ°μλμ§ μμ μ μμ΅λλ€. μ΄λ μΊμ± λ¬Έμ λ μλͺ»λ κ΅¬μ± λλ¬ΈμΌ μ μμ΅λλ€. λΈλΌμ°μ μΊμλ₯Ό μ§μ°κ±°λ κ°λ° μλ²λ₯Ό λ€μ μμν΄λ³΄μΈμ. CSSκ° λ²λ€λ¬μ μν΄ μ¬λ°λ₯΄κ² μ°κ²°λκ³ μ²λ¦¬λλμ§ νμΈνμΈμ.
- HMRμ λ°©ν΄νλ μλ°μ€ν¬λ¦½νΈ μ€λ₯: μλ°μ€ν¬λ¦½νΈ μ½λμ ꡬ문 μ€λ₯λ λ°νμ μμΈλ HMRμ΄ μ¬λ°λ₯΄κ² μλνλ κ²μ λ§μ μ μμ΅λλ€. HMRμ μ¬μ©νκΈ° μ μ μ½λμ μ€λ₯κ° μλμ§ μ μ€νκ² κ²ν νκ³ μμ νμΈμ.
HMR μ¬μ©μ μν λͺ¨λ² μ¬λ‘
HMRμ μ΅λν νμ©νλ €λ©΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ κ²μ κ³ λ €νμΈμ:- λͺ¨λμ μκ² μ μ§: μμ λͺ¨λμ HMRλ‘ μ λ°μ΄νΈνκ³ κ΄λ¦¬νκΈ°κ° λ μ½μ΅λλ€. ν° μ»΄ν¬λνΈλ₯Ό λ μκ³ κ΄λ¦¬νκΈ° μ¬μ΄ μ‘°κ°μΌλ‘ λλμΈμ.
- μΌκ΄λ μ½λ μ€νμΌ μ¬μ©: μΌκ΄λ μ½λ μ€νμΌμ μ€λ₯λ₯Ό μλ³νκ³ μμ νκΈ° μ½κ² λ§λ€μ΄ HMRμ μ λ’°μ±μ ν₯μμν¬ μ μμ΅λλ€.
- λ¦°ν°(Linter) μ¬μ©: λ¦°ν°λ μ μ¬μ μΈ μ€λ₯λ₯Ό ν¬μ°©νκ³ μ½λ μ€νμΌ κ°μ΄λλΌμΈμ κ°μ νμ¬ HMR κ΄λ ¨ λ¬Έμ λ₯Ό μλ°©νλ λ° λμμ΄ λ μ μμ΅λλ€.
- λ¨μ ν μ€νΈ μμ±: λ¨μ ν μ€νΈλ μ½λκ° μ¬λ°λ₯΄κ² μλνκ³ HMRμ΄ μμλλ‘ μλνλμ§ νμΈνλ λ° λμμ΄ λ μ μμ΅λλ€.
- νλ μμν¬μ HMR ꡬν μ΄ν΄: κ° νλ μμν¬λ HMRκ³Ό κ΄λ ¨νμ¬ κ³ μ ν λ―Έλ¬ν μ°¨μ΄κ° μμ΅λλ€. μ νν νλ μμν¬μμ HMRμ΄ μ΄λ»κ² μλνλμ§, κ·Έλ¦¬κ³ μ¬λ°λ₯΄κ² ꡬμ±νλ λ°©λ²μ μ΄ν΄νλ λ° μκ°μ ν¬μνμΈμ.
μΉ κ°λ°μ λμ΄μ HMR
HMRμ μΉ κ°λ°κ³Ό κ°μ₯ ννκ² μ°κ΄λμ§λ§, ν« λ¦¬λ‘λ©μ κ°λ μ λ€λ₯Έ λ§₯λ½μμλ μ μ©λ μ μμ΅λλ€. μλ₯Ό λ€μ΄, μΌλΆ IDEλ μλ² μΈ‘ μ½λμ λν ν« λ¦¬λ‘λ©μ μ§μνμ¬ μλ²λ₯Ό μ¬μμνμ§ μκ³ λ μλ² μΈ‘ λ‘μ§μ μ λ°μ΄νΈν μ μκ² ν©λλ€. μ΄λ APIλ λ°±μλ μλΉμ€λ₯Ό κ°λ°ν λ νΉν μ μ©ν μ μμ΅λλ€.
HMRμ λν κΈλ‘λ² κ³ λ €μ¬ν
μ μΈκ³μ μΌλ‘ λΆμ°λ νκ³Ό νλ‘μ νΈλ₯Ό μ§νν λ, HMRμ΄ λ€μν λ€νΈμν¬ μ‘°κ±΄κ³Ό κ°λ° νκ²½μ μν΄ μ΄λ»κ² μν₯μ λ°μ μ μλμ§ κ³ λ €νλ κ²μ΄ μ€μν©λλ€.
- λ€νΈμν¬ μ§μ° μκ°: λμ λ€νΈμν¬ μ§μ° μκ°μ HMR μ λ°μ΄νΈ μλμ μν₯μ μ€ μ μμ΅λλ€. μ±λ₯ ν₯μμ μν΄ CDNμ΄λ λ€λ₯Έ μΊμ± λ©μ»€λμ¦ μ¬μ©μ κ³ λ €νμΈμ.
- λ°©νλ²½ μ ν: λ°©νλ²½ μ νμ λλλ‘ HMRμ λ°©ν΄ν μ μμ΅λλ€. νμν ν¬νΈκ° μ΄λ € μκ³ HMR νΈλν½μ΄ μ°¨λ¨λμ§ μλμ§ νμΈνμΈμ.
- λ€λ₯Έ μ΄μ 체μ : HMR ꡬμ±μ΄ νμλ€μ΄ μ¬μ©νλ λ€λ₯Έ μ΄μ 체μ (Windows, macOS, Linux)μ νΈνλλμ§ νμΈνμΈμ.
- λ²μ κ΄λ¦¬: Gitκ³Ό κ°μ λ²μ κ΄λ¦¬ μμ€ν μ μ¬μ©νμ¬ μ½λ λ³κ²½ μ¬νμ μΆμ νκ³ λͺ¨λ μ¬λμ΄ λμΌν λ²μ μ μ½λλ‘ μμ νλλ‘ νμΈμ. μ΄λ μΆ©λμ λ°©μ§νκ³ λ€λ₯Έ νκ²½μμλ HMRμ΄ μ¬λ°λ₯΄κ² μλνλλ‘ λ³΄μ₯νλ λ° λμμ΄ λ©λλ€.
HMRμ λ―Έλ
HMRμ μ±μν κΈ°μ μ΄μ§λ§ κ³μν΄μ λ°μ νκ³ μμ΅λλ€. λͺ¨λ λ²λ€λ¬μ κ°λ° λꡬμ λ―Έλ λ°μ μ HMRμ μλμ μ λ’°μ±μ λμ± ν₯μμν¬ κ°λ₯μ±μ΄ λμ΅λλ€. λν μΉ κ°λ°μ λμ΄ λ λ§μ λ§₯λ½μμ HMRμ΄ μ±νλλ κ²μ κΈ°λν μ μμ΅λλ€.
λ°μ κ°λ₯μ±μ΄ μλ ν λΆμΌλ 볡μ‘ν μν κ΄λ¦¬ μλ리μ€μ λν μ§μ κ°μ μ λλ€. μ ν리μΌμ΄μ μ΄ λμ± λ³΅μ‘ν΄μ§μ λ°λΌ μνλ₯Ό ν¨κ³Όμ μΌλ‘ κ΄λ¦¬νλ κ²μ΄ μ μ λ μ€μν΄μ§κ³ μμ΅λλ€. λ―Έλμ HMR ꡬνμ ν« λ¦¬λ‘λ μ€μ μνλ₯Ό 보쑴νκ³ μ λ°μ΄νΈνκΈ° μν λ λμ λꡬλ₯Ό μ 곡ν μ μμ΅λλ€.
λ λ€λ₯Έ μ μ¬μ μΈ μ±μ₯ λΆμΌλ μλ² μΈ‘ HMR μμμ λλ€. μ μ λ λ§μ μ ν리μΌμ΄μ μ΄ νμ€ν μ κ·Ό λ°©μμ μ±νν¨μ λ°λΌ μλ² μΈ‘ μ½λλ₯Ό ν« λ¦¬λ‘λνλ λ₯λ ₯μ μ μ λ κ°μΉ μμ΄μ§ κ²μ λλ€.
κ²°λ‘
μλ°μ€ν¬λ¦½νΈ λͺ¨λ ν« λ¦¬λ‘λ©(HMR)μ κ°λ° μν¬νλ‘μ°λ₯Ό ν¬κ² κ°μ νκ³ μμ°μ±μ λμΌ μ μλ κ°λ ₯ν λꡬμ λλ€. μ 체 νμ΄μ§ μλ‘κ³ μΉ¨μ μμ κ³ μ ν리μΌμ΄μ μνλ₯Ό 보쑴ν¨μΌλ‘μ¨ HMRμ λ λΉ λ₯΄κ² λ°λ³΅νκ³ , λ ν¨μ¨μ μΌλ‘ λλ²κΉ νλ©°, λΉλ©΄ν μμ μ μ§μ€ν μ μκ² ν΄μ€λλ€. μμ κ°μΈ νλ‘μ νΈλ₯Ό νλ λκ·λͺ¨ κΈ°μ μ ν리μΌμ΄μ μ νλ , HMRμ λ ν¨μ¨μ μ΄κ³ ν¨κ³Όμ μΈ κ°λ°μκ° λλ λ° λμμ μ€ μ μμ΅λλ€. HMRμ λ°μλ€μ΄κ³ κ°λ° νλ‘μΈμ€μμ κ·Έκ²μ΄ λ§λ€ μ μλ μ°¨μ΄λ₯Ό κ²½νν΄λ³΄μΈμ.
μ€λ λ°λ‘ HMR μ€νμ μμνκ³ κ·Έκ²μ΄ μ½λ© κ²½νμ μ΄λ»κ² λ³νμν¬ μ μλμ§ νμΈν΄λ³΄μΈμ. μ¬λ¬λΆμ νμμ λ§λ λͺ¨λ λ²λ€λ¬λ₯Ό μ ννκ³ , μ νν νλ μμν¬μ λ§κ² HMRμ ꡬμ±νκ³ , μ€μκ° μ½λ μ λ°μ΄νΈμ μ΄μ μ μ¦κΈ°μΈμ. μ¦κ±°μ΄ μ½λ© λμΈμ!
μ€ν κ°λ₯ν μΈμ¬μ΄νΈ:
- μ¬λ°λ₯Έ λ²λ€λ¬ μ ν: νλ‘μ νΈμ 볡μ‘μ±κ³Ό μ€μ μ νΈλ(κ΅¬μ± vs. μ λ‘ κ΅¬μ±)μ λ°λΌ Webpack, Parcel, Viteλ₯Ό νκ°νμΈμ.
- HMR μ¬λ°λ₯΄κ² ꡬμ±νκΈ°: μ νν νλ μμν¬(React, Vue, Angular)μ νΉμ μ§μΉ¨μ λ°λΌ HMRμ μ¬λ°λ₯΄κ² νμ±ννμΈμ.
- μΌλ°μ μΈ λ¬Έμ ν΄κ²°: μ΄ κ°μ΄λμμ μ 곡λ λ¬Έμ ν΄κ²° νμ μ°Έμ‘°νμ¬ HMR κ΄λ ¨ λ¬Έμ λ₯Ό μ§λ¨νκ³ ν΄κ²°ν μ€λΉλ₯Ό νμΈμ.
- λͺ¨λ² μ¬λ‘ μ±ν: μ½λλ₯Ό μμ λͺ¨λλ‘ κ΅¬μ±νκ³ , μΌκ΄λ μ½λ μ€νμΌμ μ¬μ©νλ©°, λ¦°ν°λ₯Ό νμ©νμ¬ HMR μ λ’°μ±μ ν₯μμν€μΈμ.
- μ΅μ μ 보 μ μ§: μλ‘μ΄ κΈ°λ₯κ³Ό μ±λ₯ κ°μ μ νμ©νκΈ° μν΄ HMR κΈ°μ μ μ΅μ λ°μ μ λν μ 보λ₯Ό κ³μ μ νμΈμ.