node.js - gulp-less 任务在无效样式时以零退出

标签 node.js gulp gulp-less

首先,这是一个包含我的问题的非常简单示例的存储库: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/

相关文章:

node.js - Sails.js - PATH 变量 - 无法识别 sails 命令

node.js - 如何使用 Node Tools for Visual Studio 调试 Gulp 任务?

javascript - Gulp gulp-less 包含组件子文件夹

node.js - 如何在 .ejs 文件中获取 Expreejs 的 req 和 res 对象

node.js - fs.exists、fs.existsSync - 为什么不推荐使用它们?

javascript - Gulp 中基本 JavaScript 字符串相等失败

javascript - 两个不同的 Web 应用程序和一个源代码

gulp - source map 路径错误

node.js - Gulp-watch 不起作用,无法运行

javascript - 使用 Node 中的 mongodb 驱动程序进行不区分大小写的 "like"查询