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?