gulp 咖啡手表永远不会出错

gulp coffee watch never finishes on error

我有一个看起来像这样的任务:

gulp.task 'scripts', () ->
  gulp.src(path.scripts)
  .pipe(coffee({bare: true}).on 'error', gutil.log)
  .pipe(concat 'app.min.js')
  .pipe(size())
  .pipe(gulp.dest 'public/js')

我的手表是这样的:

gulp.task 'watch', () ->
  gulp.watch path.scripts, ['scripts']

只要我不尝试编译任何错误,手表就可以正常工作。如果我有错误,在我看来手表仍然 运行 但毫无价值地等待着什么。

如果没有错误,我会得到这样的信息:

[18:02:47] Starting 'scripts'...
[18:02:47] all files 1.05 kB
[18:02:47] Finished 'scripts' after 17 ms

但如果是一个错误,我只是吞下它:

[18:03:33] Starting 'scripts'...

它永远不会结束,手表不再工作,即使控制台认为它是 运行。建议?

为了能够在出错后继续执行,您需要发出 'end' 事件。试试这个:

gulp.task 'scripts', () ->
  gulp.src(path.scripts)
  .pipe(
    coffee({bare: true})
    .on 'error', (err) ->
      gutil.log err
      @emit 'end'
  )
  .pipe(concat 'app.min.js')
  .pipe(size())
  .pipe(gulp.dest 'public/js')