gpt4 book ai didi

node.js - Webpack 4 devServer HMR 以及其他文件更改(如 View )的完全重新加载

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:12 24 4
gpt4 key购买 nike

我有一个 Web 项目,其工作的 Webpack4 配置使用 webpack-dev-server 并启用了 HMR,并通过 npm 脚本以这种方式启动:

cross-env NODE_ENV=development webpack-dev-server --inline --hot

一切正常,HMR 适用于我的 js 和 scss 文件。现在我想知道是否可以扩展我的 Webpack 配置,以便在修改 View 模板文件时在浏览器中完全重新加载。

在我看来,webpack-dev-server 无法单独完成此操作,所以我想我需要一些其他插件。经过一番谷歌搜索后,我得到了:

  1. webpack-dev-server + browser-sync-webpack-plugin
  2. 将我的配置重写为 webpack-serve看起来it can do it
  3. chokidar + webpack-dev-middleware (用于重新加载的API?)

所以我的问题是使用 Webpack 4(.17.2) 获取 HMR + 监视给定路径并在文件更改(blade/twig/php/etc...)时重新加载浏览器的最佳方法是什么?

我当前配置的相关部分:

devServer: {
index: '',
open: true,
hotOnly: true,
publicPath: '/build/',
host: 'mysite.test',
proxy: {
'**': {
target: 'http://mysite.test',
changeOrigin: true,
headers: {
'X-Dev-Server-Proxy': 'http://mysite.test'
}
}
}
}

最佳答案

回答我自己,也许其他人可以从中受益。只是要注意:我有一个 Laravel 项目,我使用 Webpack4 来捆绑它,而不是它自己的 Laravel Mix 解决方案。我的测试 Laravel 站点由 mysite.test 上的 nginx 提供服务

1) webpack-dev-server + BrowserSync

效果很好,BrowserSync有很多好的功能,我喜欢它!唯一的缺点是它在 Webpack 的开发服务器之上创建了另一个代理。您可以按照以下步骤尝试:

安装browser-sync-webpack-plugin如上所述,那么:

const BrowserSyncPlugin = require('browser-sync-webpack-plugin');

// Webpack config, plugins section
plugins: [
new BrowserSyncPlugin({
host: "mysite.test",
port: 3000,
proxy: "mysite.test:8080",
open: "external",
files: [
'./resources/views/**/*.blade.php'
]
},{
// prevent BrowserSync from reloading the page
// and let Webpack Dev Server take care of this
reload: false
})
]

2) webpack-serve

webpack-contrib/webpack-serve 起不再可选已弃用。

3) webpack-dev-server + Chokidar

终于我开始使用这个了。简单快捷。 Chokidar是一个文件监视程序,Webpack 的开发服务器内部也使用它来监视文件。您的 node_modules 中可能已经有它,但如果没有,请使用 npmyarn 安装它。

这是我最初想要的整个 devServer 配置。 CSS 注入(inject)和 Javascript 更改由 HMR 处理,当 View 文件更改时,devserver 会使浏览器自动重新加载:

const chokidar = require('chokidar');

// Webpack's devServer config
devServer: {
before(app, server) {
chokidar.watch([
'./resources/views/**/*.blade.php'
]).on('all', function() {
server.sockWrite(server.sockets, 'content-changed');
})
},
index: '',
open: true,
host: 'mysite.test',
proxy: {
'**': {
target: 'http://mysite.test',
changeOrigin: true,
headers: {
'X-Dev-Server-Proxy': 'http://mysite.test'
}
}
}
}

在 Webpack 4.19.1 上测试

关于node.js - Webpack 4 devServer HMR 以及其他文件更改(如 View )的完全重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52322913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com