我需要通过按顺序处理不同的资源来组成gulp任务,因为它们之间存在依赖关系。
根据文档,应该通过合并流来实现,但我不知道如何强制排序和串行化。
在Gulp 3中,该如何正确地建模呢?
我通常将函数用作单个构建步骤的容器,然后从构建和监视任务中调用它们:
function buildModule(module) {
var streams = [];
// step one
streams.push(
gulp.src(path.join('./modules', module, '*.js'))
// ... series of chained calls
);
// step two
streams.push(
gulp.src([TMP, ...])
// generate target also using some of the files from step one
);
return eventStream.merge(streams);
}
gulp.task('build:A', [], function () {
return buildModule('A');
});
gulp.task('watch:buildModule', [], function () {
gulp.watch('./modules/**/*.js', function (event) {
if (event.type === 'changed') {
return buildModule(path.basename(path.dirname(event.path)));
}
});
});
gulp.task('default', ['watch:buildModule'], function () {});
.pipe
到依赖于它的另一个流吗?为什么需要手动管理同步? - Asad Saeeduddinvar stage1_1 = gulp.src(...).pipe(foo()).pipe(bar())...
。你想要使用来自stage1_1
流的文件,以及来自其他并行工作的文件,并将它们全部通过一些步骤。你可以这样做var stage1_2 = gulp.src("./myauxilaryfiles/*.*").pipe(some()).pipe(more()).pipe(processing())
。最后var final = merge(stage1_1, stage1_2).pipe(my()).pipe(final()).pipe(processing());
。这里的merge
是var merge = require('merge-stream');
。 - Asad Saeeduddinstreams
中,而是将其存储在变量中。然后,创建另一个流来表示你想要传递到step2的额外文件。现在,你需要合并这两个流并将它们传递到第二阶段。你需要引入merge-stream
模块,并调用你得到的函数与前面提到的两个流。然后,在这个合并的流上进行所有的stage2处理。希望这样说得通? - Asad Saeeduddin