Node.js / Gulp - 通过Gulp任务循环

时间:2015-07-27 22:34:48

标签: javascript node.js build stream gulp

我想遍历一个对象并在每次迭代时将一个文件路径数组传递给gulp.src,然后对这些文件进行一些处理。下面的代码仅用于说明目的,并且实际上不起作用,因为return语句会在第一次传递时终止循环。

gulp.task('js', function(){
    for (var key in buildConfig.bundle) {
        return gulp.src(bundleConfig.bundle[key].scripts)
            .pipe(concat(key + '.js'));
            // DO STUFF
    }
});

这是基本的想法。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

我能够使用合并流来解决这个问题。如果有人有兴趣,这是代码。我们的想法是在循环中创建一个流数组,并在完成迭代后合并它们:

var merge = require('merge-stream');

gulp.task('js', function(){

    // Init vars
    var jsBundleStreams = [];
    var i = 0;

    // Create array of individual bundle streams
    for (var key in buildConfig.bundle) {
        jsBundleStreams[i] = gulp.src(bundleConfig.bundle[key].scripts)
            .pipe(concat(key + '.js'))
            .pipe(gulp.dest('./public/papasteftest/'));
        i++;
    }

    // Merge and return streams
    return merge.apply(this, jsBundleStreams);

});