我的Gruntfile上有一个不同目标的任务,所有目标都包含完全相同的字段,只更改名称。是否可以通过编程方式创建这些目标,只传递目标列表?
我的目标是创建一个已安装的子模块列表,并为每个子模块创建一个包含目标的任务。具体来说,任务不是我的,我正在尝试为咖啡任务创建目标来编译一些文件,但我也需要在以后使用把手模板做同样的事情。
我尝试过创建一个通用目标并传递子模块名称,如下所示:
grunt.initConfig(
task: {
target: {
expand: true,
flatten: true,
cwd: "<%= AppModulesPaths[grunt.task.current.args[0]] %>" #"<%= frontend_src %>",
src: ["<%= AppModulesSources[grunt.task.current.args[0]]%>"],
dest: "<%= frontend_tmp %>",
rename: function(dest, src){
return dest + "<%= grunt.task.current.args[0] %>.js"
}
}
}
})
然后使用task:target:targetname注册一个任务数组,但它抱怨args未定义。
这样做有好办法吗?
答案 0 :(得分:1)
当然,它只是简单的JavaScript。
function config (targets) {
var result = {};
targets.forEach(function (target) {
result[target] = {
// target configuration here,
// optionally tailored to the target's name
};
});
return result;
}
然后,只需使用它
grunt.initConfig({
task: config(['target', 'target2', 'target3', 'targetN'])
});