我正在尝试基于 jsFiles 对象动态创建任务(缩小和连接)。 键将给出目标文件名,数组包含源文件。当我运行 gulp 时,我看到所有正在运行的任务名称,但它只写入最后一个键,在本例中为 group2.js。这里出了什么问题?
// imports here
var jsFiles =
{
group1:[file1.js,file2.js],
group2:[file2.js,file3.js]
};
for (var key in jsFiles)
{
gulp.task(key, function() {
return gulp.src(jsFiles[key])
.pipe(jshint())
.pipe(uglify())
.pipe(concat(key + '.js')) // <- HERE
.pipe(gulp.dest('public/js'));
});
}
var defaultTasks = [];
for (var key in jsFiles)
{
defaultTasks.push(key);
}
gulp.task('default', defaultTasks);
最佳答案
另一种选择是结合使用函数数组循环函数和Object.keys
,如下所示:
var defaultTasks = Object.keys(jsFiles);
defaultTasks.forEach(function(taskName) {
gulp.task(taskName, function() {
return gulp.src(jsFiles[taskName])
.pipe(jshint())
.pipe(uglify())
.pipe(concat(key + '.js'))
.pipe(gulp.dest('public/js'));
});
});
我觉得这更干净一些,因为循环和函数位于同一个地方,所以更容易维护。
关于javascript - 使用循环创建任务 [gulp],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29422805/