javascript - 如何在 gulp 中创建重复管道?

标签 javascript angularjs node.js gulp

我有一个 gulp 任务在 index.html 中注入(inject)几个依赖项,如下所示:

return gulp.src(config.serve.html)
          .pipe($.inject(gulp.src(prependSource(config.inject.source.indexes)), {
            read: false,
            starttag: config.inject.indexes,
            addRootSlash: false,
            addPrefix: prefix,
            ignorePath: ignore
          }))
          .pipe($.inject(gulp.src(managerList), {
            read: false,
            starttag: config.inject.managers,
            addRootSlash: false,
            addPrefix: prefix,
            ignorePath: ignore
          }))
          .pipe($.inject(gulp.src(prependSource(config.inject.source.directives)), {
            read: false,
            starttag: config.inject.directives,
            addRootSlash: false,
            addPrefix: prefix,
            ignorePath: ignore
          }))

          .pipe($.inject(gulp.src(prependSource(config.inject.source.routes)), {
            read: false,
            starttag: config.inject.routes,
            addRootSlash: false,
            addPrefix: prefix,
            ignorePath: ignore
          }))
          .pipe($.inject(gulp.src(prependSource(config.inject.source.css)), {
            read: false,
            starttag: config.inject.css,
            addRootSlash: false,
            addPrefix: prefix,
            ignorePath: ignore
          }))


          .pipe($.size())
          .pipe(gulp.dest(dest));
};

如您所见,所有管道都以某种方式重复(managerList 除外)。所以我想要的是在一系列注入(inject)的帮助下将重复的管道合并为一个管道。如何实现同样的目标?

最佳答案

gulp.src 返回一个流(每个 .pipe 也是如此)。如果您考虑每个 .pipe 调用在做什么,您可以简单地将它变成一个 for 循环。像这样:

config = { /* your config object */ };

var stream = gulp.src(/* source glob */);
for (var i = 0; i < injects.length; i++) {
  stream = stream.pipe($.inject(gulp.src(prependSource(config.inject.source[i])), config.inject.starttag[i]));
}

stream.pipe($.size())
      .pipe(gulp.dest(dest));

return stream;

关于javascript - 如何在 gulp 中创建重复管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28229633/

相关文章:

javascript - 在 Protractor 中测试 promise

javascript - 将数据结构从 Python 移植到 JS

javascript - 在 Google Apps 脚本中获取幻灯片的标题

javascript - 使用 jquery 切换 LinkBut​​ton 的启用/禁用状态

javascript - 隐藏/显示所选单选按钮的边框

javascript - 如何编写 angularJs Controller 以从 Parse.com 获取 Rest 数据

javascript - 什么时候必须在 Javascript 中使用 new 关键字?

javascript - 跨服务 Angular 共享枚举

javascript - 用于通过静态 IP 访问 NodeJS 网站的字符串名称

javascript - 一起使用 for 循环和异步 waterfall 的最佳方式