出于某种原因,我的 gulp 文件已停止输出错误 - 不管我在 less 文件中添加什么,它都会构建并显示我的“less worked”消息 - 我正在拔头发!有什么想法吗?
var gulp = require('gulp');
var cleanCSS = require('gulp-clean-css');
var less = require('gulp-less');
var autoprefixer = require('gulp-autoprefixer');
var notify = require('gulp-notify');
var gutil = require('gulp-util');
var sourcemaps = require('gulp-sourcemaps');
var liveReload = require('gulp-livereload');
var path = require('path');
var moment = require('moment')
gulp.task('less', function () {
return gulp.src('./_dev/less/styles.less')
.pipe(less({
paths: [ path.join(__dirname, 'less', 'includes') ]
}))
.pipe(less().on('error', function(err){
gutil.log(err);
this.emit('end');
}))
.pipe(liveReload())
.pipe(gulp.dest('./_dev/css'))
.pipe(notify('Less worked at (' + moment().format('MMM Do h:mm:ss A') + ')'));
});
最佳答案
您的错误处理程序不是 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;
}
}
坏.少
@col: #05f;
div {
font-size: 12pt;
a {
color: @link-col;
}
}
给定两个输入文件 ok.less
和 bad.less
,less
任务将显示 bad 错误。 less
和 ok.less
的完成消息,最终结果是单个输出文件 out/ok.css
。
通过注释掉 errorHandler
函数中的 this.emit('end')
行,less
任务将改为显示错误bad.less
的消息,然后停止所有进一步处理 - 您最终将完全没有输出文件。
这对你有帮助吗?在一般情况下,它应该适用于管道中的任何错误,允许您选择停止管道中的所有其他项目。
关于javascript - 减少错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37274871/