html-webpack-hot-plugin

1.2.2 • Public • Published

HTML Webpack Hot Plugin

HtmlWebpackPlugin with hot reload

When using webpack with hot module replacement, the update of html file in htmlWebpackPlugin will not trigger anything. And the notice in console will show something like "app is up to date". Refreshing the page manually is the only choice if you wanna see the latest update. And this plugin is for solving this. It will send signal to opened client when the content in htmlWebpackPlugin changes and a full reload will be triggered.

Changes that can be hot updated:

  • attribute changes of existing dom elements
  • change inner text of an existing dom element
  • appending new elements to the end of an existing dom

Because the script may change the dom element in html template, The following actions will not be considered for hot updates:

  • Deletion: Deleted elements may relate to script execution, such as dom manipulation, event listening as so on.
  • Insertion: It's hard to determine where to insert the new added dom elements if there are non-template elements that were added during scripts execution.
  • Movement: The same as Insertion.

This is an extension of HTMLWebpackPlugin

This is a tool just used in `Development` mode.

install

npm i --save-dev html-webpack-hot-plugin
yarn add --dev html-webpack-hot-plugin

usage

webpack.config.js

Notice: Below configuration is for webpack4

const HtmlWebpackPlugin = require('html-webpack-plugin')
const HtmlWebpackHotPlugin = require('html-webpack-hot-plugin')
const htmlHotPlugin = new HtmlWebpackHotPlugin({
    // enable hot update, default: true
    // if hot update acting strangly, set it to false, and open an issue here:
    // https://github.com/cxphoe/html-webpack-hot-plugin
    hot: true,
})
 
module.exports = {
  entry: 'index.js',
  output: {
    path: __dirname + '/dist',
    filename: 'index_bundle.js',
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'test.html',
      template: 'src/assets/test.html',
    }),
    // the instance of this plugin must be placed after instances of HtmlWebpackPlugin
    htmlHotPlugin,
  ],
  devServer: {
    before(app, server) {
      // This step is curcial. DevServer is needed to send reload message to opened page.
      // Without this step, the update of HtmlWebpackHotPlugin will be omitted and you will need to refresh the page manually.
      htmlHotPlugin.setDevServer(server)
    },
  },
}

Package Sidebar

Install

npm i html-webpack-hot-plugin

Weekly Downloads

895

Version

1.2.2

License

MIT

Unpacked Size

26.1 kB

Total Files

12

Last publish

Collaborators

  • cxphoe