将异步任务标记为失败,并使用非零退出代码退出gulp

时间:2014-07-11 08:26:34

标签: gulp

考虑这个简单的异步gulp任务(这显然不是一个真实的任务,但很好地说明了将异步测试标记为失败的一般问题):

gulp.task('foo', function (done) {
    setTimeout(function () {
        //HERE: how to fail the gulp run and have it exit wit non-zero status?
    }, 1000);
});

我想知道如何将foo任务标记为失败,以便Gulp中止构建并将非零退出代码状态返回给shell。我尝试过的事情:

  • done(1) - 完成任务但存在代码为0
  • 的gulp
  • done(new Error(fail)) - 完成任务但存在代码为0
  • 的gulp
  • throw new Error(fail) - 诀窍但看起来“有点野蛮”

将这样的异步任务标记为失败的惯用方法是什么?

1 个答案:

答案 0 :(得分:2)

结果证明,通过https://github.com/gulpjs/gulp/commit/d8d7542f58046f15d88795e3c48f952f54a02c3c

版本在3.8.4版本中修复了gulp本身的错误

从3.8.4开始,可以写:

gulp.task('foo', function (done) {
    setTimeout(function () {
        done('error');
    }, 1000);
});

并且已经正确退出流程并返回状态为1。