如何组成吞咽管道序列?

时间:2016-04-02 09:41:20

标签: javascript node.js gulp pipe

我的gulpfile.js中有一个共同的模式:

var rev         = require('gulp-rev');
var buffer      = require('gulp-buffer');

gulp.src.some_stuff
  .pipe(anotherStuff)
  .pipe(buffer()) // this line & 4 lines down
  .pipe(rev())
  .pipe(gulp.dest(options.dest))
  .pipe(rev.manifest({ path: 'manifest.json', merge: true }))
  .pipe(gulp.dest(options.dest)) // to this
  .pipe(extrastuff)

我想编写这5行,在我的项目中重复使用它们来完成几个gulp任务。我怎么能这样做?

我找到了multipipe包但它不支持将变量传递给新管道(你可以看到我需要在新管道中传递options.dest)。

1 个答案:

答案 0 :(得分:3)

使用lazypipe

var lazypipe = require('lazypipe');

function something(dest) {
  return (lazypipe()
   .pipe(buffer)
   .pipe(rev)
   .pipe(gulp.dest, dest)
   .pipe(rev.manifest, { path: 'manifest.json', merge: true })
   .pipe(gulp.dest, dest))();
}

gulp.src.some_stuff
  .pipe(anotherStuff)
  .pipe(something(options.dest))
  .pipe(extrastuff)