2

首先,这是一个非常简单的问题示例https ://github.com/nkoder/example-of-gulp-less-zero-exit-on-error

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

问题是当我使用gulp-lessLESS 准备 CSS 时。每当我在gulp-less执行后添加任何管道步骤时,所有错误都被“消耗”并且整个任务以 0 退出。但它不应该。

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

版本:

  • 节点 5.11.0
  • npm 3.8.6
  • 吞咽 3.9.1
  • 无吞咽 3.1.0
4

1 回答 1

1

监听error事件,然后显式退出进程:

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'));
});
于 2016-05-06T14:54:16.117 回答