Node.js 的 Webpack HMR

Webpack HMR for Node.js

我使用 webpack 来捆绑我的 nodejs 代码。众所周知,我们可以用webpack-dev-server搭建开发环境,那么nodejs呢?我知道 nodemon 可以工作,但它会重新启动整个项目,我想要一个 HMR 方式。

你可以关注这个:

  1. 运行 npm i --save-dev webpack-node-externals run-script-webpack-plugin webpack
  2. 在您的应用程序的根目录中创建一个 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 }),
    ],
  };
};
  1. 在你的 main.js 里面:
async function bootstrap() {
  <Your Express middleware and etc>
  if (module.hot) {
    module.hot.accept();
    module.hot.dispose(() => server.close());
  }
}

灵感来自 Nest.js HMR