如何在Webpack5中运行热重载(HMR)?
我正在尝试使用 webpack v5 运行 HMR,但它不起作用。当我修改并保存文件时,webpack 正确地重新编译了项目,但前端没有更新。
我阅读了这篇文章并按照说明操作:https : //webpack.js.org/guides/hot-module-replacement/
这是我的 webpack 配置:
{
mode: 'development',
entry: {
babelpoly: 'babel-polyfill',
app: [ './src/index.js', './src/app.js' ]
},
plugins: [
BundleStatsWebpackPlugin { ... },
DefinePlugin { ... },
HtmlWebpackPlugin { ... }
],
stats: { ... },
output: {
path: '[pathTo]/dist',
filename: '[name].bundle.js',
chunkFilename: '[name].bundle.js'
},
optimization: {
splitChunks: { chunks: 'all' },
runtimeChunk: 'single',
usedExports: true,
mergeDuplicateChunks: true
},
module: {
rules: [
{
test: /.(s[ac]ss)$/i,
include: path.resolve(ROOT, 'src'),
use: [
'style-loader', // Creates `style` nodes from JS strings
{
loader: 'css-loader', // Translates CSS into CommonJS
options: {
modules: {
mode: 'local',
localIdentName: devMode
? '[name]_[local]-[hash:base64:3]'
: '[local]-[hash:base64:5]',
},
},
},
{
loader: 'sass-loader', // compiles Sass to CSS
options: {
implementation: require('sass'),
},
},
],
},
{
test: /.css$/,
include: [path.join(ROOT, 'node_modules')],
use: ['style-loader', 'css-loader'],
},
{
test: /.(png|svg|jpg|gif)$/,
use: ['file-loader'],
},
{
test: /.(woff|woff2|eot|ttf|otf)$/,
use: ['file-loader'],
},
{
test: /.m?jsx?$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: [
[
'@babel/preset-env',
{
useBuiltIns: 'entry',
corejs: 3,
},
],
'@babel/preset-react',
],
plugins: [['@babel/plugin-proposal-class-properties', {loose: true}]],
},
},
},
],
},
resolve: {
extensions: [ ... ],
alias: {
...
},
modules: [
...
]
},
devtool: 'inline-source-map',
devServer: {
port: 3003,
contentBase: '[pathTo]/dist',
host: '0.0.0.0',
hot: true,
compress: true,
disableHostCheck: true,
historyApiFallback: true,
overlay: { warnings: true, errors: true },
stats: { ... }
}
}
我在用:
- 网络包 5.7.0
- webpack-cli 4.2.0
- 反应 16.13
- 节点 14.15.1
- npm 6.14.8
我用这个命令启动 webpack: webpack serve --host 0.0.0.0 --config config/webpack.dev.js
我做错了什么?谢谢你的帮助。:)
回答
我相信这是一个错误webpack-dev-serverV3 https://github.com/webpack/webpack-dev-server/issues/2758当你使用它与webpack5 browserslist。您可以等待webpack-dev-serverv4 https://github.com/webpack/webpack-dev-server/pull/2592#issuecomment-734400875,它很快就会到来,或者target: 'web'在您的development模式下暂时使用。
- target: 'web' helped. thx m8. 🙂