看了许多关于 Hot Module Replacement 设置的文章,设置貌似有多种不同的方案。
但我发现只设定:
output.publicPath
devServer.hot
HotModuleReplacementPlugin
module.hot.accept()
使用 webpack-dev-server 就可以开启 HMR。
因此想请问关于 entry 中的:
'webpack-dev-server/client?http://localhost:8080',
'webpack/hot/dev-server',
'webpack/hot/only-dev-server',
以及 devServer 中的:
inline: true
以上的详细用途是什么?对 HMR 来说是必要的吗?
附上 webpack.config.js:
const path = require('path');
const webpack = require('webpack');
module.exports = {
context: path.join(__dirname, 'src'),
entry: ['./index.js'],
output: {
path: path.join(__dirname, 'dist/js'),
filename: 'bundle.js',
publicPath: '/js/'
},
module: {
rules: [{
test: /\.js$/,
exclude: /node_modules/,
use: [{
loader: 'babel-loader',
options: {
"presets": [
["es2015", { "modules": false }]
]
}
}]
}]
},
devServer: {
contentBase: path.join(__dirname, 'dist'),
hot: true,
open: true
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NamedModulesPlugin()
]
};
以及 index.js:
if (module.hot) {
module.hot.accept();
}
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
闭关修行中......