gulp在出现任何错误时停止gulp进程

gulp在出现任何错误时停止gulp进程,gulp,gulp-watch,gulp-sass,gulp-uglify,Gulp,Gulp Watch,Gulp Sass,Gulp Uglify,我在我的项目中使用gulp进行产品构建相关活动。我有如下任务 gulp.task('bundle-libs', bundlelibs); gulp.task('bundle-modules', bundle); /* build libs for production */ gulp.task('build:prod', function (done) { runSequence('clean', ['styles', 'copy-assets'], 'compile', 'syste

我在我的项目中使用gulp进行产品构建相关活动。我有如下任务

gulp.task('bundle-libs', bundlelibs);
gulp.task('bundle-modules', bundle);

/* build libs for production */
gulp.task('build:prod', function (done) {
    runSequence('clean', ['styles', 'copy-assets'], 'compile', 'systemjs_config', 'prefix_routes', 'bundle-libs', done)
});

/* create module bundles */
gulp.task('bundle', function (done) {
    runSequence('copy-required-files', 'bundle-modules', done);
}); 

但是在这种情况下,当任何一个任务失败时,我会在控制台中得到一个错误,但是构建过程会继续。我想做的是,当任何任务失败时,我想在控制台中显示适当的错误并停止构建过程,即我不想执行后续任务。怎么办?我在网上搜索,但找不到任何能解决这个问题的东西。请帮忙。谢谢。

这取决于您试图处理的错误类型。它是作为异常抛出的,您可以使用try-catch处理它。它将进入catch块,如果您不想执行剩余的任务,则不执行done函数。例如:

function testTask(done) {
  try {
    return gulp.src('tmp/dist/*.html')
          .pipe(gulp.dest('tmp/dist'));
  } catch(error) {
    const error_message = 'Error:: task failed. ' + error.name + ' : ' + error.message;
  }
}

如果是错误回调,有很多方法可以处理它们。您可以尝试

是否应该为每个任务执行此操作?如果我有n个函数,有没有办法将它们一起处理?是的,你可以,但是当你发现错误并执行回调时,它将启动另一个任务。这是在我试图这么做的时候发生的。因为在回调之前,我有一个异步调用,这需要时间。