我的问题是只有scss更改才能被Gulp中的BrowserSync识别(没有html或js或/ img更改)。我想这是因为scss更改直接流式传输。很奇怪我有一个构建,它识别html和img的变化虽然我再也找不到了。
有人看到了这个错误吗?
gulp.watch('./dist/*').on('change', browserSync.reload);
我认为
gulpfile.js
src
dist
是相关的。我的道路有什么问题吗?
我的相关文件夹结构如下:
sub
在src中进行更改,并在运行时使用gulp复制到dist。
谢谢!
答案 0 :(得分:2)
我无法解释。但是,当我从browserSyncInit任务中删除你的手表调用并将其放入其他手表旁边的默认任务的回调中时,一切正常。
相关的代码:
// BrowserSync config
gulp.task('browserSyncInit', function() {
browserSync.init({
server: {
baseDir: 'dist'
}
});
});
// Default Task
gulp.task('default', ['clean', 'copy', 'sass', 'js', 'img', 'browserSyncInit'], function () { //todo asynchronous
gulp.watch(scssSrc, ['sass']);
gulp.watch(jsSrc, ['js']);
gulp.watch(imgSrc, ['img']);
gulp.watch(htmlSrc, ['copy']);
gulp.watch('./dist/**/*').on('change', function () {
console.log("Watch hit");
browserSync.reload();
});
});
这对于你的gulp文件是否理想?我可以理解将手表最初在另一项任务中触发的想法。
我发现非常奇怪的事情;有时DIST手表会采取,而所有其他手表都不会。好像有一个竞争条件正在发生,哪些人被登记,其他人被覆盖。当他们像你原来那样分开时,无论是SRC手表还是DIST手表都有效。当DIST手表工作并触发重载时,我可以直接在DIST中编辑文件。
在CB功能中将所有手表放在一起使用你的github项目。
我还注意到另一个不相关的问题。重新运行你的gulp文件需要我rm -rf dist第一个其他明智的我有错误。
答案 1 :(得分:1)
我认为问题出在glob:'./dist/*'
- 它只会观看dist
的内容。我想您希望'./dist/**/*'
观看文件夹和所有子文件夹。