首先,这是一个包含我的问题的非常简单示例的存储库:https://github.com/nkoder/example-of-gulp-less-zero-exit-on-error
我想定义 gulp 构建管道,它会因任何错误而失败。该管道将用于自动化过程(例如持续集成),因此我需要构建命令在失败时返回非零退出代码。它适用于无效的 Jade 模板或使用 Karma 运行的未通过测试。
问题是当我使用gulp-less
从LESS准备CSS时。每当我在 gulp-less
执行后添加任何管道步骤时,所有错误都会“消耗”,并且整个任务以 0 退出。但它不应该。
- 第一个问题是:如何强制
错误
任务以非零退出代码失败?(已解决,请参阅下面的答案) - 第二个问题是:为什么在
less()
调用中发出的error
事件后跟管道流不会使整个任务返回非零退出代码? 在其他一些类似情况下会返回非零,例如。 Jade 或 ESLint 失败。 (尚未解决)
版本:
- Node 5.11.0
- npm 3.8.6
- gulp 3.9.1
- 无 gulp 3.1.0
最佳答案
听error
event然后显式退出进程:
gulp.task('wrong', function () {
return gulp
.src('invalid-styles.less')
.pipe(less().on('error', function(error) {
console.log(error.message);
process.exit(1);
}))
.pipe(gulp.dest('generated-styles.css'));
});
关于node.js - gulp-less 任务在无效样式时以零退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074363/