Node.js / Gulp - 循环 Gulp 任务
Node.js / Gulp - Looping Through Gulp Tasks
我想遍历一个对象并在每次迭代时将一组文件路径传递给 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
}
});
这是基本思想。关于如何做到这一点有什么想法吗?
我能够使用 merge-streams 来解决这个问题。如果有人感兴趣,这是代码。这个想法是在你的循环中创建一个流数组,并在完成迭代时合并它们:
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);
});
我想遍历一个对象并在每次迭代时将一组文件路径传递给 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
}
});
这是基本思想。关于如何做到这一点有什么想法吗?
我能够使用 merge-streams 来解决这个问题。如果有人感兴趣,这是代码。这个想法是在你的循环中创建一个流数组,并在完成迭代时合并它们:
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);
});