1

我正在使用 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());

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

4

2 回答 2

0

你可以做的是插件plumber在出错的情况下退出

所以在起绒过程中管道工

    .pipe(plumber(_doExit))

这是您定义 _doExit 的方式

function _doExit() {
    process.exit(1);
}
于 2017-04-13T08:15:14.410 回答
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);
于 2017-04-12T14:56:36.233 回答