Зарегистрировать новую задачу grunt для работы с поставленной целью

#javascript #gruntjs

#javascript #gruntjs

Вопрос:

Мой Gruntfile определяет 3 цели «dev», «beta» и «production» для нескольких задач. Если я запускаю grunt task:target , она работает правильно для этой задачи.

Теперь я хочу объединить все свои задачи в одну задачу сборки. Я пытался:

 grunt.registerTask('build', ['task1', 'task2', 'task3']);
  

но если я запускаю grunt build:dev , он игнорирует мою цель и просто запускает все цели для всех задач сборки.

Это работает:

 grunt.registerTask('build:dev', ['task1:dev', 'task2:dev', 'task3:dev']);
grunt.registerTask('build:beta', ['task1:beta', 'task2:beta', 'task3:beta']);
grunt.registerTask('build:production', ['task1:production', 'task2:production', 'task3:production']);
  

Но я уверен, что это неправильный способ, и он плохо масштабируется.

Я смог сделать с этим то, что хотел:

 grunt.registerTask('build', 'My build task', function(targetName) {

    runTask('task1', targetName);
    runTask('task2', targetName);
    runTask('task3', targetName);

});

function runTask(task, targetName) {

    if (targetName) {
        grunt.task.run(task   ':'   targetName);
    } else
    {
        grunt.task.run(task);
    }
}
  

Это работает, но мне интересно, не упускаю ли я что-то, уже встроенное в Grunt, для достижения того же.