Javascript 注册新的grunt任务以使用提供的目标

Javascript 注册新的grunt任务以使用提供的目标,javascript,gruntjs,Javascript,Gruntjs,我的Grunfile在几个任务中定义了3个目标“dev”、“beta”和“production”。如果我运行grunt task:target它可以正确地执行该任务 现在,我想将所有任务合并到一个构建任务中。我试过: grunt.registerTask('build', ['task1', 'task2', 'task3']); 但是如果我运行grunt build:dev,它会忽略我的目标,而只是运行所有构建任务的所有目标 这项工作: grunt.registerTask('build:d

我的Grunfile在几个任务中定义了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中已经内置的实现同样功能的东西