我正在处理一个 JavaScript 源文件,我希望将其存放在两个或多个目标文件夹中。如果我链接管道,则可以通过管道传输到多个目标,但如果一次将其添加到流中则不行。这使我无法动态设置目标文件夹的数量。
例如执行以下工作
var rebundle = function() {
var stream = bundler.bundle();
stream = stream.pipe(source("bundled.js"));
stream.pipe(gulp.dest(dests[0]))
.pipe(gulp.dest(dests[1]))
.pipe(gulp.dest(dests[2]));
return stream;
};
但是以下的工作不一致。有时某个文件夹无法输出,有时可以输出但缺少一些内容。
var rebundle = function() {
var stream = bundler.bundle();
stream = stream.pipe(source("bundled.js"));
dests.map(function(d) {
stream.pipe(gulp.dest(d));
});
return stream;
};
简而言之,是否有一种方法可以对其进行修改,以在从一个文件中的一个源文件夹开始时允许动态数量的目标?
版本
- gulp 3.9
- 浏览9
最佳答案
每次调用stream.pipe()
都会返回一个新流。您必须将 .pipe()
的每个后续调用应用于之前返回的流。
当您执行 stream = stream.pipe(source("bundled.js"))
时,您的做法是正确的,但随后在您的 dest.map()
中> 回调,您只是将一个又一个管道添加到同一流中。这意味着您正在创建大量新流,但这些流永远不会从您的任务中返回,因此 gulp 不会等待它们完成。
您必须每次存储返回的流,以便在下一次迭代中使用它:
dests.map(function(d) {
stream = stream.pipe(gulp.dest(d));
});
关于javascript - Gulp.JS,一个源到多个动态目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41643132/