Hot Reload (Webpack)
Hot Reload (Webpack)
μμ© νλ‘κ·Έλ¨μ λΆνΈ μ€νΈλ© νλ‘μΈμ€μ κ°μ₯ ν° μν₯μ λ―ΈμΉλ κ²μ TypeScript μ»΄νμΌμ λλ€. κ·Έλ¬λ λ¬Έμ λ λ³κ²½μ΄ λ°μν λλ§λ€ μ 체 νλ‘μ νΈλ₯Ό λ€μ μ»΄νμΌν΄μΌν©λκΉ? μ ν μλλλ€. κ·Έλ κΈ° λλ¬Έμ webpack HMR (Hot-Module Replacement)μ μμ© νλ‘κ·Έλ¨μ μΈμ€ν΄μ€ν νλ λ° νμν μκ°μ ν¬κ² μ€μ λλ€.
Installation
λ¨Όμ νμν ν¨ν€μ§λ₯Ό μ€μΉνμ:
$ npm i --save-dev webpack webpack-cli webpack-node-externals ts-loader
Configuration
κ·Έλ° λ€μ μΉν©μ κ΅¬μ± νμΌ μΈ webpack.config.js
λ₯Ό λ§λ€μ΄ λ£¨νΈ λλ ν 리μ μ μ₯ν΄μΌν©λλ€.
const webpack = require('webpack');
const path = require('path');
const nodeExternals = require('webpack-node-externals');
module.exports = {
entry: ['webpack/hot/poll?100', './src/main.ts'],
watch: true,
target: 'node',
externals: [
nodeExternals({
whitelist: ['webpack/hot/poll?100'],
}),
],
module: {
rules: [
{
test: /.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
],
},
mode: 'development',
resolve: {
extensions: ['.tsx', '.ts', '.js'],
},
plugins: [new webpack.HotModuleReplacementPlugin()],
output: {
path: path.join(__dirname, 'dist'),
filename: 'server.js',
},
};
μ΄ κ΅¬μ±μ μΉν©μ μ ν리μΌμ΄μ μ λν λͺκ°μ§ νμ μ¬νμ μλ €μ€λλ€. μ΄λμ μνΈλ¦¬ νμΌμ΄ μκ³ , μ»΄νμΌ λ νμΌμ 보μ νκΈ° μν΄ μ΄λ€ λλ ν 리λ₯Ό μ¬μ©ν΄μΌ νλ©°, μμ€ νμΌμ μ»΄νμΌνκΈ° μν΄ μ΄λ€ μ’ λ₯μ λ‘λλ₯Ό μ¬μ©νκΈΈ μνλμ§. κΈ°λ³Έμ μΌλ‘ κ±±μ ν νμκ° μμΌλ©° μ΄ νμΌμ λ΄μ©μ μ ν μ΄ν΄ν νμκ° μμ΅λλ€.
Hot-Module Replacement
HMRμ νμ±ννλ €λ©΄ Nest μμ© νλ‘κ·Έλ¨ νλͺ© νμΌ (main.ts
)μ μ΄κ³ λͺ κ°μ§ μ€μν μ¬νμ μΆκ°ν΄μΌν©λλ€.
declare const module: any;
async function bootstrap() {
const app = await NestFactory.create(ApplicationModule);
await app.listen(3000);
if (module.hot) {
module.hot.accept();
module.hot.dispose(() => app.close());
}
}
bootstrap();
κ·Έλ¦¬κ³ κ·Έκ² μ λΆμ
λλ€. μ€ν νλ‘μΈμ€λ₯Ό λ¨μννλ €λ©΄ package.json
νμΌμ scripts
μ μ΄ λ μ€μ μΆκ°νμμμ€.
"start": "node dist/server",
"webpack": "webpack --config webpack.config.js"
μ΄μ λͺ λ Ή νμ μ΄κ³ μλ λͺ λ Ήμ μ€ννμμμ€ :
$ npm run webpack
μΉν©μ΄ νμΌ watch λ₯Ό μμνλ©΄ λ€λ₯Έ λͺ λ Ήν μ°½μμ λ€λ₯Έ λͺ λ Ήμ μ€ννμμμ€.
$ npm run start
μ€μ μ¬λ‘λ μ¬κΈ°μμ νμΈν μ μμ΅λλ€.
Last updated
Was this helpful?