使用 plumber 和 utils 处理 gulp 中的错误

handle error in gulp with plumber and utils

将 gulp 与 plumber 模块一起使用,但遇到了问题;下面是我的主要 gulpfile.js

var gulp = require('gulp');
var $ = require("gulp-load-plugins")({
  pattern: ['gulp-*', 'gulp.*', 'browserify**'],
  replaceString: /\bgulp[\-.]/
});

var src = './app/';
var dest = './env/';

gulp.task('scripts', function(){
    return gulp.src([src + '**/*.js'])
            .pipe($.plumber(function(error) {
                  // Output an error message
                  $.util.log($.util.colors.red('Error (' + error.plugin + '): ' + error.message));
                  // emit the end event, to properly end the task
                  this.emit('end');
             }))
            .pipe($.uglify().on('error', $.util.log))
            .pipe($.concat('vendor.min.js'))
            .pipe(gulp.dest(dest));
});

运行 gulp scripts 给出错误两次 因为有 $.plumber()$.uglify().on 方法;我想显示成一个,这样错误就可以在控制台中用红色方便地显示出来。如果我发出 .on('error', $.util.log) 而不是执行停止并使应用程序崩溃。

就像魔术一样;大多数时候,每当我提出有关 SO 的问题时,我都会在几次试验中自行找到解决方案。

尝试过并成功

var onError = function (err) {
    $.util.log($.util.colors.red('Error (' + err.plugin + '): ' + err.message));
};

以后

gulp.task('scripts', function(){
        return gulp.src([src + '**/*.js'])
                .pipe($.plumber())
                .pipe($.uglify().on('error', onError))
                .pipe($.plumber.stop())
                .pipe($.concat('vendor.min.js'))
                .pipe(gulp.dest(dest));
});

希望对大家有所帮助