如何在更改文件后重新编译webpack?

Bru*_*oLM 22 node.js webpack

我正在使用带有两个入口点的webpack:

entry: {
  js: './assets/index.js',
  css: './assets/sass/all.scss'
},
Run Code Online (Sandbox Code Playgroud)

我想配置它,所以当我更改jsscss文件时,它会再次自动运行webpack.


我尝试使用webpack-dev-server命令:

webpack-dev-server --hot
Run Code Online (Sandbox Code Playgroud)

看起来它正在重建,它会输出消息

webpack:bundle现在是VALID.

但是,如果我尝试刷新浏览器,我看不到我的更改.(在开发工具上禁用缓存,按下Ctrl + F5).重新启动节点也不起作用,就好像它在其他地方构建而不是在配置的输出文件上:

output: {
  path: path.join(__dirname, '/public'),
  filename: 'bundle.js'
Run Code Online (Sandbox Code Playgroud)

},

Ano*_*ous 52

如果您希望webpack监视更改,只需使用watch标志:

webpack --watch
Run Code Online (Sandbox Code Playgroud)

使用此选项,webpack将监视更改并重新编译.

  • 或者您可以在模块中添加“ watch:true”。在webpack.config,js中导出 (2认同)

小智 2

我不是 webpack 专家,但我发现 webpack-dev-server 不会写入磁盘。它通过用于提供文件的 Express 实例提供内存中的结果。

您可以通过在 html 文件中更改 localhost:8080/webpack-dev-server/bundle.js 的路径来测试这一点,如果您运行 webpack-dev 服务器,则更改应该会显示。

处理它的正确方法是使用 publicPath 属性更新您的 webpack.config.js :

output: {
    path: path.join(__dirname, '/public'),
    filename: 'bundle.js',
    publicPath: "/public/"
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,脚本标签应引用 src="public/bundle.js"。

更多信息