Gulp.js:基于forEach循环的任务

10

我有一个对象数组,长得像下面这样。

var bundles = [
  {
    src: 'js/my-component/*.js',
    bundleName: 'my-component.js'
  },
  {
    src: 'js/my-other-component/*.js',
    bundleName: 'my-other-component.js'
  }
]

我希望gulp任务能够处理/合并数组中的每个条目,但似乎无法正常工作。

gulp.task('bundlejs', function(){
    return bundles.forEach(function(obj){
      return gulp.src(obj.src)
      .pipe(concat(obj.bundleName))
      .pipe(gulp.dest('js/_bundles'))
    });
});
2个回答

13

你应该将这些流合并并返回结果,以便任务能够在适当的时间完成:

var es = require('event-stream');

gulp.task('bundlejs', function () {
  return es.merge(bundles.map(function (obj) {
    return gulp.src(obj.src)
      .pipe(concat(obj.bundleName))
      .pipe(gulp.dest('js/_bundles'));
  }));
});

谢谢Ben,我会尝试的。 - gkiely
我把这个标记为答案,因为它突出了我提交的代码的最佳实践结构。我遇到的问题是如下详细说明的错别字。 - gkiely

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接