Node.js / Gulp - Looping Through Gulp Tasks

我是研究僧i 提交于 2020-01-09 11:58:26

问题


I'd like to loop through an object and pass an array of file paths to gulp.src on each iteration and then do some processing on those files. The code below is for illustration purposes and won't actually work since the return statement kills the loop on the first pass.

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

That's the basic idea. Any ideas on how to do this?


回答1:


I was able to pull this off using merge-streams. If anyone's interested, here's the code. The idea is to create an array of streams inside your loop and merge them when finished iterating:

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);

});


来源:https://stackoverflow.com/questions/31664485/node-js-gulp-looping-through-gulp-tasks

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!