Gulp 如何从管道中触发“吞咽”任务?

Gulp 如何从管道中触发“吞咽”任务?,gulp,gulp-watch,incremental-build,Gulp,Gulp Watch,Incremental Build,在gulpfile中,我想写一些 watch = require 'gulp-watch' gulp.task 'mytask', -> gulp.src '*.txt' .pipe watch('*.txt') .pipe gulp.trigger('echo') .pipe gulp.dest('tmp') 因此,每次更改文本文件时都应启动“echo”任务。 请注意,我希望任务“echo”只启动一次,即使修改了两个或多个文件 我遇到了gulp.trigger,但它似乎

在gulpfile中,我想写一些

watch = require 'gulp-watch'
gulp.task 'mytask', ->
  gulp.src '*.txt'
  .pipe watch('*.txt')
  .pipe gulp.trigger('echo')
  .pipe gulp.dest('tmp')
因此,每次更改文本文件时都应启动“echo”任务。 请注意,我希望任务“echo”只启动一次,即使修改了两个或多个文件

我遇到了
gulp.trigger
,但它似乎是一个不推荐使用的功能。在任何情况下,上面的代码都会产生
TypeError:Object#没有方法“trigger”

那么,是否有任何选项可以通过这种方式触发任务

原则上,我们可以像

watch '*.txt', ->
  runSequence(...)
但就我所知,这种方式不是渐进式的。我只想把修改过的文件放进tmp

UPD。看来我找到了一个更好的解决方法:

transform = require('vinyl-transform')
map_stream = require('map-stream')
run_sequence = require('run-sequence')

gulp.task 'mytask', ->
  mytrigger = transform (filename) ->
    run_sequence('echo')
    map_stream (chunk, next) -> next(null, chunk)
  gulp.src '*.txt'
  .pipe watch('*.txt')
  .pipe mytrigger
  .pipe gulp.dest('tmp')
因此,我将任务“echo”包装成一个流。 但也许有更优雅的方式