How to use the HotModuleReplacementPlugin function from webpack

Find comprehensive JavaScript webpack.HotModuleReplacementPlugin code examples handpicked from public code repositorys.

webpack.HotModuleReplacementPlugin is a plugin provided by Webpack that enables hot module replacement (HMR) in a Webpack development server, allowing for real-time updates to the client application without requiring a full page refresh.

19
20
21
22
23
24
25
26
27
28
plugins: [
  new webpack.DefinePlugin({
    NODE_ENV: config.dev.env.NODE_ENV
  }),
  // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
  new webpack.HotModuleReplacementPlugin(),
  new webpack.NoEmitOnErrorsPlugin(),
  // https://github.com/ampedandwired/html-webpack-plugin
  new HtmlWebpackPlugin({
    filename: 'index.html',
fork icon4
star icon33
watch icon4

177
178
179
180
181
182
183
184
185
186
if (!proMode) {
  rendererConfig.plugins.push(
    new webpack.DefinePlugin({
      '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`
    }),
    new webpack.HotModuleReplacementPlugin()
  )
}

if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' &&
fork icon0
star icon4
watch icon2

How does webpack.HotModuleReplacementPlugin work?

webpack.HotModuleReplacementPlugin is a plugin provided by Webpack that enables hot module replacement (HMR) in a Webpack development server, allowing for real-time updates to the client application without requiring a full page refresh. When you add webpack.HotModuleReplacementPlugin to your Webpack configuration, it integrates with the Webpack development server to enable HMR functionality. This allows the server to detect changes to your source code and automatically send updated modules to the client, allowing for real-time updates without requiring a full page refresh. To enable HMR functionality for a specific module, you must mark the module as "hot" using the Webpack HMR API. This can be done by adding special code to the module, such as a call to module.hot.accept(), which tells Webpack to accept the updated module and apply it to the client application. Overall, webpack.HotModuleReplacementPlugin provides a powerful tool for improving the development experience with Webpack, enabling real-time updates to the client application during development without requiring a full page refresh. This can save time and improve productivity when developing complex web applications.

603
604
605
606
607
608
609
610
611
612
// It is absolutely essential that NODE_ENV is set to production
// during a production build.
// Otherwise React will be compiled in the very slow development mode.
new webpack.DefinePlugin(env.stringified),
// This is necessary to emit hot updates (CSS and Fast Refresh):
isEnvDevelopment && new webpack.HotModuleReplacementPlugin(),
// Experimental hot reloading for React .
// https://github.com/facebook/react/tree/master/packages/react-refresh
isEnvDevelopment &&
  shouldUseReactRefresh &&
fork icon0
star icon2
watch icon0

39
40
41
42
43
44
45
46
47
48

config.devtools = '#inline-source-map';

if (environment === 'development') {
  config.plugins.push(
    new Webpack.HotModuleReplacementPlugin(),
    new Webpack.NoErrorsPlugin(),
    new WebpackError(process.platform)
  );
}
fork icon0
star icon2
watch icon5

Ai Example

1
2
3
4
5
6
7
8
9
10
11
12
13
const webpack = require("webpack");

module.exports = {
  entry: "./src/index.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.js",
  },
  plugins: [new webpack.HotModuleReplacementPlugin()],
  devServer: {
    hot: true,
  },
};

In this example, webpack.HotModuleReplacementPlugin is added to the Webpack configuration using the plugins option. This integrates the HMR functionality with the Webpack development server. The devServer option is also configured to enable HMR functionality for the development server, with the hot option set to true. To enable HMR functionality for a specific module, you might add special code to the module, such as a call to module.hot.accept(). This tells Webpack to accept the updated module and apply it to the client application. With webpack.HotModuleReplacementPlugin and HMR enabled in the development server, you can make changes to your source code and see the updates in real-time without requiring a full page refresh.

56
57
58
59
60
61
62
63
64
65
            page: path.resolve('src/page/'),
        },
    },
    plugins:
        target === 'web'
            ? [new LoadablePlugin(), new webpack.HotModuleReplacementPlugin(), new MiniCssExtractPlugin()]
            : [new LoadablePlugin(), new MiniCssExtractPlugin()],
    externals: target === 'node' ? ['@loadable/component', nodeExternals()] : undefined,
});

fork icon0
star icon1
watch icon1

12
13
14
15
16
17
18
19
20
21
})

if (process.env.WEBPACK_DEV_SERVER
    && process.env.WEBPACK_DEV_SERVER !== 'undefined') {
  if (devServer.hmr) {
    this.plugins.append('HotModuleReplacement', new webpack.HotModuleReplacementPlugin())
    this.config.output.filename = '[name]-[hash].js'
  }

  this.config.merge({
fork icon0
star icon0
watch icon1

213
214
215
216
217
218
219
220
221
222
  port,
  compress: true,
  historyApiFallback: true
},
plugins: [
  new Webpack.HotModuleReplacementPlugin()
],
optimization: {
  runtimeChunk: 'single'
},
fork icon0
star icon0
watch icon0

10
11
12
13
14
15
16
17
18
19
20
const logger = require('../../server/logger');
const pkg = require(path.resolve(process.cwd(), 'package.json')); // eslint-disable-line
const { dllPlugin } = pkg;


const plugins = [
  new webpack.HotModuleReplacementPlugin(), // Tell webpack we want hot reloading
  new HtmlWebpackPlugin({
    inject: true, // Inject all files that are generated by webpack, e.g. bundle.js
    template: 'app/index.html',
  })
fork icon0
star icon0
watch icon0