Использование Grunt для перебора шаблонов

Я создаю файл grunt, и у меня есть 2 папки, которым нужны те же самые задачи, что и для них. Я хотел бы иметь возможность использовать свойство 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 и app2 -rather, было бы здорово объединить их в одну конфигурацию. Но я не могу понять, как это сделать. Спасибо за любую помощь!

Спасибо!

Ответы

Ответ 1

Grunt - это просто обычный JS, поэтому вы можете создать функцию для создания ваших объектов конфигурации.

function appConfig(appName){
    return {
        name: appName,
        src: ['src/app/' + appName],
        jsTpl: ['<%= distdir %>/' + 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 %>']
    }
}