Grunt - 命令行参数,不工作

时间:2013-06-09 17:11:42

标签: gruntjs command-line-arguments

我在我的grunt脚本中使用命令行选项:http://kurst.co.uk/transfer/Gruntfile.js

但是当我尝试获取选项时,命令grunt --vers:0.0.1总是返回'undefined':

var version = grunt.option('vers') || ''; 

你能帮我搞定吗?

我尝试了不同的(CLI)命令:

grunt vers:asd
grunt -vers:asd
grunt vers=asd

以及使用:

grunt.option('-vers');
grunt.option('--vers');

但到目前为止还没有运气。希望我错过了一些简单的东西。

这是我的package.js文件:

{
    "name": "",
    "version": "0.1.0",
    "description": "Kurst EventDispatcher / Docs Demo ",
    "devDependencies": {
        "grunt": "~0.4.1",
        "grunt-contrib-yuidoc": "*",
        "grunt-typescript": "~0.1.3",
        "uglify-js": "~2.3.5",
        "grunt-lib-contrib": "~0.6.0",
        "grunt-contrib-uglify":"*"
    }
}

2 个答案:

答案 0 :(得分:38)

指定command line argument in Grunt的正确语法是:

grunt --option1=myValue

然后,在grunt文件中,您可以访问该值并按以下方式打印:

console.log( grunt.option( "option1" ) );

此外,您可能遇到--vers问题的另一个原因是因为它已经是一个返回版本的grunt选项:

★  grunt --vers
grunt-cli v0.1.7
grunt v0.4.1

因此,切换到不同的选项名称可能是个好主意。

答案 1 :(得分:3)

值得一提的是,随着您要使用的命令行参数的数量增加,与grunt内部使用的某些参数发生冲突。

我用nopt-grunt

解决了这个问题

来自插件作者:

  

Grunt太棒了。 Grunt对使用其他命令行选项的支持并不令人敬畏。当前的文档具有误导性,因为它们给出了使用布尔标志和带有值的选项的示例,但是它们并没有告诉您它只能使用单个选项。尝试并使用多个选项,事情很快就会崩溃。

绝对值得一试