【发布时间】:2022-02-14 19:54:41
【问题描述】:
我使用webpack 来捆绑我的nodejs 代码。众所周知,我们可以使用webpack-dev-server来为dev搭建环境,那么nodejs呢?我知道nodemon 可以工作,但是它重新启动了整个项目,我想要一个 HMR 方式。
【问题讨论】:
标签: javascript node.js webpack webpack-hmr
我使用webpack 来捆绑我的nodejs 代码。众所周知,我们可以使用webpack-dev-server来为dev搭建环境,那么nodejs呢?我知道nodemon 可以工作,但是它重新启动了整个项目,我想要一个 HMR 方式。
【问题讨论】:
标签: javascript node.js webpack webpack-hmr
你可以按照这个:
npm i --save-dev webpack-node-externals run-script-webpack-plugin webpack
webpack-hmr.config.js 文件并将其放入:
const nodeExternals = require('webpack-node-externals');
const { RunScriptWebpackPlugin } = require('run-script-webpack-plugin');
module.exports = function (options, webpack) {
return {
...options,
entry: ['webpack/hot/poll?100', options.entry],
externals: [
nodeExternals({
allowlist: ['webpack/hot/poll?100'],
}),
],
plugins: [
...options.plugins,
new webpack.HotModuleReplacementPlugin(),
new webpack.WatchIgnorePlugin({
paths: [/\.js$/, /\.d\.ts$/],
}),
new RunScriptWebpackPlugin({ name: options.output.filename }),
],
};
};
main.js 内:async function bootstrap() {
<Your Express middleware and etc>
if (module.hot) {
module.hot.accept();
module.hot.dispose(() => server.close());
}
}
灵感来自Nest.js HMR
【讨论】: