当jshint失败时停止执行gulp管道

时间:2017-04-12 14:02:27

标签: javascript gulp gulp-jshint

我正在使用gulp来运行开发人员Web服务器,并且我希望在javascript文件发生更改时发生以下任务:

  • Lint javascript
  • 如果没有错误,请将文件复制到.tmp /
  • 重新加载网页

我在其他示例中看到使用jshint.reporter(' fail'),如下面的代码所示,停止管道的其余部分。

var jshint   = require('gulp-jshint'),
    watch    = require('gulp-watch');

watch('resources/js/src/**/*.js', function() {
   util.log('Changes to js source files detected');
}).pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(jshint.reporter('fail'))
.pipe(gulp.dest('.tmp/js/src/'))
.pipe(connect.reload());

然而,当我这样做时,无论棉绒是否成功,它似乎总是停止。那么,如何在掉毛失败后结束管道?

2 个答案:

答案 0 :(得分:0)

不确定这是否是最佳解决方案,但确实有效:

var map = require('map-stream');
...

var copyAndReload = map(function (file, cb) {
  if (file.jshint.success) {
    gulp.src('resources/js/src/**/*.js')
        .pipe(gulp.dest('.tmp/js/src/'))
        .pipe(connect.reload());
    }
 });

watch('resources/js/src/**/*.js', function() {
  util.log('Changes to js source files detected');
}).pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(copyAndReload);

答案 1 :(得分:0)

您可以执行的操作是插件plumber以便在出现错误时退出

所以在管道工程中管道管道工

    .pipe(plumber(_doExit))

这是你如何定义_doExit

function _doExit() {
    process.exit(1);
}