咕嘟咕嘟腕表采用browserSync
问题描述:
我想写一大口的文件,请执行下列操作:咕嘟咕嘟腕表采用browserSync
- 奔跑看任务,重建的任何模板变化把手模板。
- 如果构建失败,它会通过notify()方法通知BrowserSync,这样我就可以在浏览器中看到出现错误的弹出窗口。 手表不应停止。
- 如果构建正常,则调用browserSync.reload()。
于是我想出了代码以下PICE:
function SomeTask() {
return gulp.src('*.hbs')
.pipe(plumber())
.pipe(somePlugin1())
.pipe(somePlugin2())
.pipe(gulp.dest('dest'));
}
gulp.watch(['*.hbs'], function(event) {
SomeTask()
.on('error', function(error) {
browserSync.notify('ERROR!');
})
.on('end', browserSync.reload)
})
的问题是,如果我用大口,水管工“结束”事件是emmits和browserSync.reload()被调用。所以我没有在浏览器中看到任何错误通知。另一方面,如果没有“水管工”,任何生成错误都会中断监视任务。
任何想法?
答
gulp-plumber
让我们来提供一个自定义errorHandler
function。你可以把你的browserSync.notify()
电话放在那里:
function SomeTask(handler) {
return gulp.src('*.hbs')
.pipe(plumber({errorHandler: handler}))
.pipe(somePlugin1())
.pipe(somePlugin2())
.pipe(gulp.dest('dest'));
}
gulp.watch(['*.hbs'], function(event) {
var failed = false;
SomeTask(function(error) {
browserSync.notify('ERROR: ' + error.message);
console.log(error.toString());
failed = true;
})
.on('end', function() {
if (!failed) {
browserSync.reload();
}
});
});