Javascript 使用Grunt迭代模板

Javascript 使用Grunt迭代模板,javascript,gruntjs,Javascript,Gruntjs,我正在构建一个grunt文件,我有两个文件夹需要应用相同的grunt任务。我希望能够使用grunttemplate属性来迭代每个文件夹,这样我就不必通过重复配置对象来膨胀grunt配置对象。像这样: app1: { name: 'app1', src: ['src/app/<%= app1.name %>'], jsTpl: ['<%= distdir %>/<%= app1.name %>/templates/**/*.js'], js: '

我正在构建一个grunt文件,我有两个文件夹需要应用相同的grunt任务。我希望能够使用grunt
template
属性来迭代每个文件夹,这样我就不必通过重复配置对象来膨胀grunt配置对象。像这样:

app1: {
  name: 'app1',
  src: ['src/app/<%= app1.name %>'],
  jsTpl: ['<%= distdir %>/<%= app1.name %>/templates/**/*.js'],
  js: '<%= app1.src %>/**/*.js'
},
app2 {
  name: 'app2',
  src: ['src/app/<%= app2.name %>'],
  jsTpl: ['<%= distdir %>/<%= app2.name %>/templates/**/*.js'],
  js: '<%= app2.src %>/**/*.js'
},
concat: {
  app1: {
    src: ['<%= app1.src %>'],
    dest: ['dist']
  },
  app2: {
    src: ['<%= app2.src %>'],
    dest: ['dist/<%= app2.name %>']
  }
 }
app1:{
名称:“app1”,
src:['src/app/'],
jsTpl:['//templates/***.js'],
js:“/***.js”
},
附件2{
名称:“app2”,
src:['src/app/'],
jsTpl:['//templates/***.js'],
js:“/***.js”
},
康卡特:{
附录1:{
src:[''],
目的地:['dist']
},
附录2:{
src:[''],
目的地:['dist/']
}
}
不必重复
app1
app2
,这将是非常理想和干燥的,相反,通过一些配置将它们组合在一起会非常棒。但我似乎不知道怎么做。谢谢你的帮助


谢谢

Grunt只是一个普通的JS,所以您可以创建一个函数来生成配置对象

function appConfig(appName){
    return {
        name: appName,
        src: ['src/app/' + appName],
        jsTpl: ['<%= distdir %>/' + appName + '/templates/**/*.js'],
        js: 'src/app/**/*.js'
    };
}
函数appConfig(appName){
返回{
名称:appName,
src:['src/app/'+appName],
jsTpl:['/'+appName+'/templates/***.js'],
js:'src/app/***.js'
};
}
然后在设置配置时只需调用此函数

app1: appConfig('app1'),
app2: appConfig('app2'),
concat: {
    app1: {
        src: ['<%= app1.src %>'],
        dest: ['dist']
    },
    app2: {
        src: ['<%= app2.src %>'],
        dest: ['dist/<%= app2.name %>']
    }
}
app1:appConfig('app1'),
app2:appConfig('app2'),
康卡特:{
附录1:{
src:[''],
目的地:['dist']
},
附录2:{
src:[''],
目的地:['dist/']
}
}

太棒了。那就行了。谢谢别忘了为这件事奖励你的赏金。