javascript - 使用循环创建任务 [gulp]

标签 javascript gulp

我正在尝试基于 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/

相关文章:

javascript - 使用 Gulp Del 否定父文件夹不起作用

javascript - Gulp 浏览器同步只工作一次

css - gulp.js : Using 'debug_info' on gulp-sass

javascript - 防止 .mouseout 事件执行

javascript - Framework7停止传播解决方案

javascript - 在 Vue.js 应用程序中初始化 firebase 3.4.0

javascript - Node.js/Javascript 在 JSON 对象数组中搜索

javascript - Knockout.js 错误 : Unable to parse bindings. 消息:ReferenceError:myData 未定义;绑定(bind)值:with:myData

node.js - 错误 : Node Sass Not Supported in Current Environment

javascript - JS任务一直在运行