由于某些原因,我的gulp文件已停止输出错误 - 不管我对我建立的较少文件的广告是什么,并显示我的“工作不太好”。信息 - 我把头发拉了出来!有什么想法吗?
AnyDto
答案 0 :(得分:3)
您的错误处理程序不是pipe()
调用主链的一部分,因此执行始终继续到gulp-notify
的最终管道。 Gulp中的错误处理可能很棘手,如下面的概述所示:
要正确处理此问题,您应使用gulp-plumber来处理错误,例如:
<强> Gulpfile.js 强>
'use strict'
const gulp = require('gulp')
const $ = require('gulp-load-plugins')()
const del = require('del')
// ------------------------------------------------------------
gulp.task('clean', done => {
del([ './out/**' ]).then(paths => {
done()
})
})
// ------------------------------------------------------------
gulp.task('less', [ 'clean' ], function () {
return gulp.src('./*.less')
.pipe($.plumber({
errorHandler (err) {
$.notify.onError('Error: <%= error.message %>')(err)
this.emit('end')
}
}))
.pipe($.less())
.pipe(gulp.dest('./out'))
.pipe($.notify('Finished: <%= file.relative %>'))
})
// ------------------------------------------------------------
gulp.task('default', [ 'less' ])
<强> ok.less 强>
@col: #05f;
div {
font-size: 12pt;
a {
color: @col;
}
}
<强> bad.less 强>
@col: #05f;
div {
font-size: 12pt;
a {
color: @link-col;
}
}
鉴于两个输入文件ok.less
和bad.less
,less
任务将显示bad.less
的错误以及ok.less
的已完成消息,其中最终结果是单个输出文件out/ok.css
。
通过在this.emit('end')
函数中注释掉errorHandler
行,less
任务将显示bad.less
的错误消息,然后停止所有进一步处理 - 您最终将没有输出文件。
这对你有帮助吗?它应该适用于管道中任何错误的一般情况,如果您愿意,可以停止管道中的所有其他项目。