__webpack__modules__ 用以维护所有的模块。而热模块替换的原理,即通过 chunk 的方式加载最新的 modules,找到 __webpack__modules__ 中对应的模块逐一替换,并删除其上下缓存。js// webpack.config.js const HtmlWebpackPlugin = require('html-webpack-plugin'); const path = require("path"); module.exports = { target: 'web', mode: "development", entry: './index.js', output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist') }, plugins: [ new HtmlWebpackPlugin({title: 'Hot Module Replacement'}) ], devtool: 'source-map', devServer: { // inline:false, // hot:false // hotOnly: true } }
启动webpack webpack serve ![]()
打开浏览器,修改js,浏览器自动刷新
修改配置 inline置为true
修改代码,浏览器无刷新
memory-fs,新文件产出之后如何通知到浏览器(基于 websocket 通信)hot和hotOnly的区别hot与hotOnly都会开启HMR热更新,但是对于不支持HMR的资源hot会fallback刷新加载,hotOnly不会刷新加载,会报如上错误
要自己配置
如果你遇到以下的问题
![]()
必须在入口文件加这个代码,否则热更新无效
js
style-loader实现了热更新插件if (module.hot) {
module.hot.accept();
}