grunt,grunt-shell和命令参数

时间:2013-12-27 10:32:01

标签: arguments gruntjs

我想将参数传递给grunt-shell,就像文档中定义的那样:

module.exports = function(grunt) {

// Configure Grunt
grunt.initConfig({
    shell: {           
        hello: {
            command: function (greeting) {
                return 'echo ' + greeting;
            },
            options: {
                stdout: true
            }
        }

    }
});

grunt.loadNpmTasks('grunt-shell');
grunt.registerTask('d', 'shell:hello');

当我在没有参数的情况下执行它时它正在工作但是当我尝试发出一个参数时我得到了一个错误:

Julio:Server julio$ grunt d
Running "shell:hello" (shell) task
undefined

Done, without errors.
Julio:Server julio$ grunt d:me
Warning: Task "me" not found. Use --force to continue.

Aborted due to warnings.

我的误解在哪里?

谢谢

1 个答案:

答案 0 :(得分:9)

你的问题是别名,别名不像你想的那样工作。

如果您使用

grunt shell:hello:me

然后它会以你期望的方式工作。

由于别名可以是零个或多个任务的列表,因此将参数传递给其他类是没有意义的。如果你想要对它进行别名,那么你所希望的最好的就是创建另一个任务来进行别名,而不是真正的别名。

grunt.registerTask('d', function (greeting) {
  grunt.task.run('shell:hello:' + greeting);
});

在这种情况下,您可以使用

完成预期的操作
grunt d:me