我们使用gulp-plumber捕获gulp-autoprefixer、gulp-sass、gulp-less等插件处理css文件中产生的错误,避免整个进程因为css文本中的错误而crash掉,但是当把gulp-autoprefixer升级到3.0后会发现,gulp-plumber在捕获错误后会卡住不能继续执行任务,并抛出handle error的提示。
原来网上的gulp教程告诉我们使用gulp-plumber时一般都是直接使用.pipe(plumber())
,但实际上,某些插件的流抛出错误事件后,并不会同时抛出结束事件,因此plumber就会卡住。
所以我们要通过plumber的errorHandler方法来给流抛出一个流结束事件。
gulp.src('./less/**/*.less')
.pipe(plumber({
errorHandler: function(err) {
console.log(err);
this.emit('end');
}
}))
.pipe(less)
.dest(gulp.dest('./build'));