浏览器同步未重新加载文件事件 add/change
Browser-sync not reloading for file event add/change
我正在使用浏览器与 webpack 同步,因为构建中有一些文件 webpack 没有规则。出于某种原因,当我的图像文件为 modified/added/removed?
时,浏览器同步不会触发重新加载
在终端中记录 [BS] File event [add] : image.png
和
[BS] File event [change] : image.png
但与我编辑 .html 文件时不同,它没有说 [BS] Reloading Browsers...
这是我的浏览器同步初始化:
browserSync.init({
files: ['./**.html', './**.png']
});
如果你想观看当前目录中的所有 HTML 个文件,请使用 ./*.html
或 *.html
**
— 这是子目录; *
— 目录中的文件
示例:
./**/*.html
— 在扩展名为 html
的所有子目录文件中查看
app/js/*.js
— 观看目录 app/js
中扩展名为 js
的所有文件
的更多信息
原来我需要将自定义事件处理程序传递给 browserSync.init 文件选项,它使用 reload()
响应任何类型的事件
示例:
browserSync.init({
files: [
{
match: ['./img/**'],
fn: function (event, file) {
this.reload()
}
}
]
})
默认情况下 BroswerSync 仅侦听 change
事件。可以更改 watchEvents
选项以侦听 add
ing 文件。添加add
、unlink
、addDir
和unlinkDir
监听文件和目录的添加和删除。
browserSync.init({
files : [ './img/**' ]
watchEvents : [ 'change', 'add', 'unlink', 'addDir', 'unlinkDir' ]
});
我遇到了同样的问题,对我有用的解决方案是 injectChanges:false
检查文档页面:https://www.browsersync.io/docs/options#option-injectChanges
所以试试这个:
browserSync.init({
injectChanges: false,
files: ['./**.html', './**.png']
});
of 对于那些使用 Laravel Mix(就像我一样)的人:
mix.browserSync({
injectChanges: false,
files: ['./**.html', './**.png']
});
查看浏览器同步代码库后,BS 将执行页面刷新(又名浏览器重新加载)或注入文件更改。 BS对以下扩展名的文件进行注入:"css"、"gif"、"jpg"、"jpeg"、"png"、"svg"、"webp", "map".
如果要对所有文件类型禁用代码注入,请将 injectChanges
配置设置为 false。或者添加 --no-inject-changes
命令行标志。此选项将关闭所有文件类型的注入。
如果您仍想允许对上面列出的文件类型的子集进行代码注入,请删除 injectChanges
配置或将其设置为 false。另外,删除 --no-inject-changes
如果设置。然后在 files
数组中为需要浏览器重新加载的文件添加条目。例如:
files: [
{
match: ['./img/**'],
fn: function (event, file) {
this.reload()
},
},
],
我正在使用浏览器与 webpack 同步,因为构建中有一些文件 webpack 没有规则。出于某种原因,当我的图像文件为 modified/added/removed?
时,浏览器同步不会触发重新加载在终端中记录 [BS] File event [add] : image.png
和
[BS] File event [change] : image.png
但与我编辑 .html 文件时不同,它没有说 [BS] Reloading Browsers...
这是我的浏览器同步初始化:
browserSync.init({
files: ['./**.html', './**.png']
});
如果你想观看当前目录中的所有 HTML 个文件,请使用 ./*.html
或 *.html
**
— 这是子目录; *
— 目录中的文件
示例:
./**/*.html
— 在扩展名为html
的所有子目录文件中查看
app/js/*.js
— 观看目录app/js
中扩展名为js
的所有文件
原来我需要将自定义事件处理程序传递给 browserSync.init 文件选项,它使用 reload()
响应任何类型的事件示例:
browserSync.init({
files: [
{
match: ['./img/**'],
fn: function (event, file) {
this.reload()
}
}
]
})
默认情况下 BroswerSync 仅侦听 change
事件。可以更改 watchEvents
选项以侦听 add
ing 文件。添加add
、unlink
、addDir
和unlinkDir
监听文件和目录的添加和删除。
browserSync.init({
files : [ './img/**' ]
watchEvents : [ 'change', 'add', 'unlink', 'addDir', 'unlinkDir' ]
});
我遇到了同样的问题,对我有用的解决方案是 injectChanges:false
检查文档页面:https://www.browsersync.io/docs/options#option-injectChanges
所以试试这个:
browserSync.init({
injectChanges: false,
files: ['./**.html', './**.png']
});
of 对于那些使用 Laravel Mix(就像我一样)的人:
mix.browserSync({
injectChanges: false,
files: ['./**.html', './**.png']
});
查看浏览器同步代码库后,BS 将执行页面刷新(又名浏览器重新加载)或注入文件更改。 BS对以下扩展名的文件进行注入:"css"、"gif"、"jpg"、"jpeg"、"png"、"svg"、"webp", "map".
如果要对所有文件类型禁用代码注入,请将 injectChanges
配置设置为 false。或者添加 --no-inject-changes
命令行标志。此选项将关闭所有文件类型的注入。
如果您仍想允许对上面列出的文件类型的子集进行代码注入,请删除 injectChanges
配置或将其设置为 false。另外,删除 --no-inject-changes
如果设置。然后在 files
数组中为需要浏览器重新加载的文件添加条目。例如:
files: [
{
match: ['./img/**'],
fn: function (event, file) {
this.reload()
},
},
],