Gulp.JS,一个来源到动态数量的目的地



我正在处理一个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;
};

简而言之,有没有办法修改它以允许从一个文件中的一个源文件夹干净地启动时动态数量的目标?

版本

  • 咕噜咕噜 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));
});

最新更新