我想通过构建管道处理一系列文件夹。对于每个文件夹,我启动另一个gulp管道,它将创建一些源文件。最后,我想通过zip()插件将它们全部组合在一起,以生成最终的工件。
以下伪代码显示了我的方法。但是,我无法将gulp.src
的结果推送到当前管道。
return gulp.src(someFolder)
.pipe(through(function(folder, enc, cb){
// how to add the result of the following line to my
// own pipeline????
this.push(gulp.src(path.join(folder, "whatever"))
.pipe(somePlugin()));
}))
.pipe(zip(....))
.pipe(gulp.dest(....));
有关如何将这些管道组合在一起的任何提示吗?
答案 0 :(得分:1)
这正是gulp-foreach
的目的。使用它相当于您发布的代码将如下所示:
var foreach = require('gulp-foreach');
return gulp.src(someFolder)
.pipe(foreach(function(stream, folder) {
return gulp.src(path.join(folder.path, "whatever"))
.pipe(somePlugin());
}))
.pipe(zip(....))
.pipe(gulp.dest(....));
请注意,上述内容将丢弃原始gulp.src(someFolder)
中的所有文件。它们不会包含在ZIP中。如果你想保留周围的那些,你可以使用merge-stream
:
var foreach = require('gulp-foreach');
var merge = require('merge-stream');
return gulp.src(someFolder)
.pipe(foreach(function(stream, folder) {
return merge(stream,
gulp.src(path.join(folder.path, "whatever"))
.pipe(somePlugin()));
}))
.pipe(zip(....))
.pipe(gulp.dest(....));