gpt4 book ai didi

javascript - Gulp 使用 browserSync 观看

转载 作者:行者123 更新时间:2023-12-02 14:15:56 28 4
gpt4 key购买 nike

我正在尝试编写一个执行以下操作的 gulp 文件:

  1. 运行监视任务,在任何模板更改时重建 Handlebars 模板。
  2. 如果构建失败,它会通过notify()方法通知BrowserSync,这样如果出现问题,我可以在浏览器中看到弹出窗口。 watch 不应停止。
  3. 如果构建正常,它将调用 browserSync.reload()。

所以我想出了以下代码:

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)
})

问题是,如果我使用 gulp-plumber 'end' 事件就会发出,并且 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();
}
});
});

关于javascript - Gulp 使用 browserSync 观看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39040401/

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