javascript - 依赖任务的 gulp 错误处理

标签 javascript build gulp

请找到gulpfile.js的内容如下。

任务uglify 依赖于任务jshint。目前,当我运行 gulp 时,无论 jshint 任务的结果如何,这两个任务都会执行。我不希望在出现“jshint”错误时执行 uglify 任务。

换句话说,当存在依赖任务时,如果前面的任务检测到错误,我不希望执行后续任务。

gulp 中有可能吗?

var gulp = require('gulp');
var jshint = require('gulp-jshint');
var uglify = require('gulp-uglify');

gulp.task('jshint', function () {
  return gulp.src(['assets/js/**/*.js'])
    .pipe(jshint('.jshintrc'))
    .pipe(jshint.reporter('jshint-stylish'));
});

gulp.task('uglify', ['jshint'], function() {
  return gulp.src('assets/js/**/*.js')
    .pipe(uglify())
    .pipe(gulp.dest('assets-min/js/'));
});

gulp.task('default', ['jshint', 'uglify']);

请引用下面的控制台输出 - 不需要。尽管出现了 jshint 错误,但 uglify 任务成功运行。

我还创建了一个 GitHub 存储库,其中包含上述内容的样板代码。 请在 @sarbbottam/gulp-workflow 找到相同的内容.

控制不需要的工作流 console output - not desired

控制台超出预期的工作流程 console output - expected

最佳答案

对于 JSHint,有一个用于此目的的内置报告程序,fail。如果发生错误,它将停止您的 gulp 进程。

您只需重新定义您的任务,例如:

gulp.task('jshint', function () {
  return gulp.src(['assets/js/**/*.js'])
    .pipe(jshint('.jshintrc'))
    .pipe(jshint.reporter('jshint-stylish'))
    .pipe(jshint.reporter('fail'))
})

对于其他任务,您可以在其上添加一个错误回调并退出进程以防止后续任务运行。

这是一个使用 ngmin 的例子(因为 uglify 很难破解,但它是一样的):

function handleError (err) {
  console.log(err.toString())
  process.exit(-1)
}

gulp.task('min', function () {
  return gulp.src(['assets/js/**/*.js'])
    .pipe(ngmin())
    .on('error', handleError)
})

关于javascript - 依赖任务的 gulp 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966781/

相关文章:

javascript - 即使使用 webkit 前缀,clip-path 也无法在 safari 上工作

javascript - 在 Android 网络浏览器上的输入文本中移动光标

android - Ant 构建脚本 : cannot find android. jar

gulp sass watch任务@import问题

javascript - 有没有更干净的方式来链接这些 Bluebird promise ?

javascript - 需要减少表格宽度

java - 如何将应用程序属性文件处理到 Ant 构建脚本中?

c++ - VC++ 类在新构建时失败,但在添加空格后神秘地构建

javascript - BrowserSync 阻止在 Firefox (OS X) 中导航

npm - NPM -g (global) install 和 NPM --save 有什么区别