考虑这个简单的异步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 done(new Error(fail))
- 完成任务但存在代码为0 throw new Error(fail)
- 诀窍但看起来“有点野蛮”将这样的异步任务标记为失败的惯用方法是什么?
答案 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。