如果 lint 因 Gulp 失败,则不运行任务?



我有一些Gulp任务...

gulp.task('checkScssSyntax', function() {
    return gulp.src(scssFiles)
        .pipe(sassLint())
        .pipe(sassLint.format());
});
gulp.task('checkJavascriptSyntax', function() {
  var jsStream = gulp.src(jsFiles);
  return jsStream.pipe(jsHint())
    .pipe(jsHint.reporter('jshint-stylish'));
});
gulp.task('default', function() {
    runSequence(['checkJavascriptSyntax', 'checkScssSyntax'], function(error) {
      if (error) {
        console.log(error);
      } else {
        runSequence('compileJS', 'compileCSS', 'watch');
      }
    });
});

这似乎不起作用。无论发生什么情况,Gulp都可以简单地运行第二个runSequence

我希望只有在没有警告的情况下才能运行第二个任务序列,并且在任何一个语法检查中都没有错误。我还想避免将任何东西输出到控制台外,除了将其打印到控制台外。

如何完成?

您的checkScssSyntaxcheckJavascriptSyntax任务不会发出错误事件,因此run-sequence不会注意到其中一个何时失败。gulp-sass-lintgulp-jshint都不默认发出错误事件,而是提供指示他们这样做的功能。

在您的checkScssSyntax任务中使用sassLint.failOnError()

gulp.task('checkScssSyntax', function() {
    return gulp.src(scssFiles)
        .pipe(sassLint())
        .pipe(sassLint.format())
        .pipe(sassLint.failOnError());
});

在您的checkJavascriptSyntax任务中使用jsHint.reporter('fail')

gulp.task('checkJavascriptSyntax', function() {
  var jsStream = gulp.src(jsFiles);
  return jsStream.pipe(jsHint())
    .pipe(jsHint.reporter('jshint-stylish'))
    .pipe(jsHint.reporter('fail'));
});

我还想避免将任何东西输出到控制台外,除了将其打印到控制台

Gulp有一个CLI标志,可以让您抑制所有墨西哥仓库:

gulp --silent

最新更新