webpack-dev-server 不会自动更新 HTML?

webpack-dev-server doesn't update HTML auto?

我将 webpack-dev-server 与 webpack v5 一起使用,出于某种原因,当我对 CSS 和 js 进行更改时,它会按预期时间更新,但对于我拥有的 HTML 文件手动刷新我的浏览器以查看新的编译版本。

src
  |-index.html
  |-index.js

webpack.config.js

const path = require("path");
const htmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  mode: "development",
  output: {
    clean: true,
    filename: "bundel.js",
    path: path.resolve(__dirname, "dist"),
  },
  plugins: [
    new htmlWebpackPlugin({
      filename: "index.html",
      template: path.resolve(__dirname, "src", "index.html"),
    }),
  ],
};

我的 package.json devDependencies

"devDependencies": {
    "html-webpack-plugin": "^5.5.0",
    "webpack": "^5.70.0",
    "webpack-cli": "^4.9.2",
    "webpack-dev-server": "^4.7.4"
  }

我用 npx webpack serve --open

启动我的服务器

我添加了 CSS 文件及其相关的 CSS 加载程序进行测试,并在我确定它可以正常工作后删除它,只是 HTML 是问题所在

您可以在更改 index.html 内容时重现该问题

尝试使用DevServer选项重新加载页面并全部压缩。 而不是 运行ning npx webpack serve --open 运行 npm run start 使用此脚本配置:

  "scripts": {
    "start": "webpack-dev-server",
    "build": "webpack",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

并尝试将此基本配置用于您的 webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    // Default settings 
    mode:'development',
    devtool:'inline-source-map',
    entry:{
        main: path.join(__dirname,'src','index.js')
    },
    output:{
        filename:'index.js',
        path: path.resolve(__dirname,'dist'),
        clean:true,
    },
    // Loaders
    module:{
        // JavaScript
        rules:[
            { 
                test: /\.js$/i, 
                use:{ 
                loader:'babel-loader', 
                options:{ 
                    "presets":['@babel/preset-react']
                }}
            },
            // Css
            {
                test: /\.css$/i, use:['style-loader','css-loader']
            }
        ]
    },
    // Plugins
    plugins:[
        new HtmlWebpackPlugin({
            template: path.join(__dirname,'public','index.html') ,
            filename:'index.html'
        })
    ],
    // DevServer
    devServer:{
        port:8080,
        open:true,
        compress:true,
        hot:true,
        liveReload:true,
    }
};

问题是 webpack-dev-server 默认不观看 HTML 个文件

所以我找到了两个解决方案:

  • 第一个解决方案是 built-in 通过添加 watchFiles:
  • 抛出 devServer
 devServer: {
   watchFiles: ["src/*.html"],
   hot: true,
 },
  • 第二种解决方案使用名为 browser-sync-webpack-plugin
  • 的外部插件