Node.js 无吞咽任务退出,无效样式为零

Node.js 无吞咽任务退出,无效样式为零,node.js,gulp,gulp-less,Node.js,Gulp,Gulp Less,首先,这是一份回购协议,其中有一个非常简单的例子说明了我的问题: 我想定义任何错误都会失败的gulpbuildpipeline。这个管道将用于自动化过程(例如持续集成),因此我需要build命令在失败时返回非零退出代码。它对我来说适用于无效的Jade模板或使用Karma运行的未通过测试 问题是当我使用gulpless从更少的资源准备CSS时。每当我在执行gulpless之后添加任何管道步骤时,所有错误都会被“消耗”,整个任务将以0退出。但它不应该 第一个问题是:如何使用非零退出代码强制错误的任

首先,这是一份回购协议,其中有一个非常简单的例子说明了我的问题:

我想定义任何错误都会失败的gulpbuildpipeline。这个管道将用于自动化过程(例如持续集成),因此我需要build命令在失败时返回非零退出代码。它对我来说适用于无效的Jade模板或使用Karma运行的未通过测试

问题是当我使用
gulpless
从更少的资源准备CSS时。每当我在执行
gulpless
之后添加任何管道步骤时,所有错误都会被“消耗”,整个任务将以0退出。但它不应该

  • 第一个问题是:如何使用非零退出代码强制
    错误的
    任务失败?(已解决,请参阅下面的答案)
  • 第二个问题是:为什么在管道流后面的
    less()
    调用中发出的
    error
    事件没有使整个任务返回非零退出代码?
    在其他一些类似情况下,例如在Jade或ESLint故障中,会返回非零。(尚未解决)
版本:

  • 节点5.11.0
  • npm 3.8.6
  • 吞咽3.9.1
  • 大口喝3.1.0
侦听,然后明确退出流程:

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'));
});

谢谢你的解决方案!我不太喜欢显式调用
process.exit(…)
,但如果这是让
less()
正确失败的唯一方法,那么就OK。