Ответ 1
Вы можете создать задачу динамического псевдонима следующим образом:
grunt.registerTask('taskA', function(target) {
var tasks = ['taskB', 'taskC'];
if (target == null) {
grunt.warn('taskA target must be specified, like taskA:001.');
}
grunt.task.run.apply(grunt.task, tasks.map(function(task) {
return task + ':' + target;
}));
});
Вот FAQ с другим примером в документах Grunt: http://gruntjs.com/frequently-asked-questions#dynamic-alias-tasks