我想使用一个源文件生成具有不同特征的多个目标文件。这是我想要做的一个淡化版本:
gulp.task('build', function() {
var src = gulp.src('myfile.txt')
for (var i = 0; i < 10; i++) {
src
.pipe(someplugin(i))
.pipe(rename('myfile-' + i + '.txt'))
.dest('./build')
}
});
据推测,&#34; someplugin&#34;将根据传递给它的索引更改文件内容,因此上面的代码将生成10个文件,每个文件的内容略有不同。
这不起作用,我没想到,但还有其他方法可以实现吗?
答案 0 :(得分:2)
我最终创建了一个为我构建任务的函数。这是一个例子:
function taskBuilder(i) {
return function() {
gulp.src('*.mustache')
.pipe(someplugin(i))
.pipe(rename('myfile-' + i + '.txt'))
.dest('./build');
};
}
var tasks, task, i;
for (i = 0; i < 10; i++) {
taskName = 'tasks-' + i;
gulp.task(taskName, taskBuilder(i));
tasks.push(task);
}
gulp.task('default', tasks);
答案 1 :(得分:1)
也许你应该检查一下:
How to save a stream into multiple destinations with Gulp.js?
如果它没有回答你的问题,我相信一个简单的解决方案就是让许多任务一个接一个地运行。例如:
gulp.task('build', function() {
return gulp.src('*.txt')
.pipe(someplugin(i))
.pipe(rename('myfile-1.txt'))
.dest('./build')
}
});
gulp.task('build2', [build], function() {
return gulp.src('*.txt')
.pipe(someplugin(i))
.pipe(rename('myfile-2.txt'))
.dest('./build')
}
});
正在运行的任务&#39; build2&#39;将运行&#39; build&#39;首先,然后&#39; build2&#39;什么时候完成。如果你不必等待#build;&#39;要完成,只需删除&#34;返回&#34;他们将在同一时间运行。