2015-07-28 11 views
14

Sto costruendo un file grunt e ho 2 cartelle che richiedono gli stessi compiti grunt applicati. Vorrei poter usare la proprietà grunt template per eseguire iterazioni su ogni cartella in modo da non dover gonfiare il mio oggetto di configurazione grunt ripetendo gli oggetti di configurazione. In questo modo:Utilizzo di Grunt per iterare su modelli

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 %>'] 
    } 
} 

Sarebbe ideale e molto secca di non dover ripetere app1 e app2 -rather, sarebbe fantastico avere loro raggruppati insieme attraverso alcune configurazioni. Ma non riesco a capire come farlo. Grazie per qualsiasi aiuto!

Grazie!

+1

Ricordati di premiare la vostra bontà per questa Nikk. – James

risposta

7

Grunt è solo un JS ordinario, quindi è possibile creare una funzione per generare gli oggetti di configurazione.

function appConfig(appName){ 
    return { 
     name: appName, 
     src: ['src/app/' + appName], 
     jsTpl: ['<%= distdir %>/' + appName + '/templates/**/*.js'], 
     js: 'src/app/**/*.js' 
    }; 
} 

Poi semplicemente chiamare questa funzione quando si imposta la configurazione

app1: appConfig('app1'), 
app2: appConfig('app2'), 
concat: { 
    app1: { 
     src: ['<%= app1.src %>'], 
     dest: ['dist'] 
    }, 
    app2: { 
     src: ['<%= app2.src %>'], 
     dest: ['dist/<%= app2.name %>'] 
    } 
} 
+0

Fantastico. Questo lo farà. Grazie! –