如何从管道触发gulp任务?

时间:2015-09-17 19:22:44

标签: 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 by searching the web,但它似乎是一个弃用的功能。在任何情况下,上面的代码都会产生TypeError: Object #<Gulp> has no method 'trigger'

那么有没有以这种方式触发任务的选项?

P.S。原则上,可以像

一样解决问题
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'包装成一个流。 但也许有更优雅的方式?

0 个答案:

没有答案