如果lint与Gulp失败,那么不要运行任务吗?

时间:2016-12-09 23:17:44

标签: node.js gulp task lint

我有一些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

我希望Gulp只在没有警告的情况下才运行第二个任务序列,并且在任何一个语法检查中都没有错误。我还想避免将ANYTHING输出到控制台,而不是将linters打印到控制台。

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

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

我还想避免输出ANYTHING到控制台,除了linters打印到控制台

Gulp有一个CLI flag让你压制所有gulp记录:

gulp --silent