20

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

grunt --vers:0.0.1但是,当我尝试获取选项时,该命令总是返回“未定义”:

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":"*"
    }
}
4

2 回答 2

38

在 Grunt中指定命令行参数的正确语法是:

grunt --option1=myValue

然后,在 grunt 文件中,您可以访问该值并像这样打印它:

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

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

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

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

于 2013-06-09T19:17:41.360 回答
3

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

我用nopt-grunt解决了这个问题

来自插件作者:

咕噜棒极了。Grunt 对使用附加命令行选项的支持并不出色。当前的文档具有误导性,因为它们提供了使用布尔标志和带有值的选项的示例,但它们并没有告诉您它仅适用于单个选项。尝试并使用多个选项,事情很快就会崩溃。

绝对值得一试

于 2015-01-09T17:11:32.717 回答