我如何在运行时添加和评估命令行选项?
我已经尝试过:
module.exports = function(grunt) {
var cli = grunt.cli;
cli.optlist["environment"] = {
"short": "E",
info: "Build environment",
type: String
};
// This only outputs "environment=abc" if Grunt was called with
// --environment, with -E it returns "environment=undefined"
console.log("environment=" + grunt.option("environment"));
grunt.initConfig({ ... });
...
}
使用-E
时,只要我使用--environment
开关,grunt.option()
返回未定义。奇怪的是,新选项显示在--help
屏幕中。
显然,选项对象仅是初始化的:https://github.com/gruntjs/grunt/blunt/blob/0.3-stable/lib/grunt/grunt/cli.js#l105。我无法弄清楚为什么在使用长开关选项时都会评估新选项。
我认为在添加新选项后应该重新选择选项。我可以再次调用grunt.tasks(),但这是我所期望的。
。错误的方式。有什么更好的方法?
在创建咕unt的助手或任务时,我会有相同的限制吗?这是一个普遍的限制,应该在咕unt内部更改吗?
这个问题与:
有关- Grunt 0.3.15 (据我所知,它也应适用于0.4.x)
- 节点0.6.18
编辑
我现在已经更逆转了咕unt,并试图改变自己的咕unt声以使自己在运行时添加选项。
我认为,我认为咕unt声的变化太多了,误导了。让我描述总结的更改。
到目前为止,这是我的grunt文件:
grunt.addOptions({
"environment": {
"short": "L",
info: "Build environment",
type: String
}
});
addOptions()
尝试将传递的选项添加到optlist
对象,然后重新分配选项对象。重新放置仅是通过将代码包装到一个初始化和addOptions()
的方法中的方法来完成的。
到目前为止,我的实施还不能解决问题。由于grunt的内部依赖性结构不允许加载和解析grount文件(这需要解析命令行选项),然后再初始化命令行选项配置(这是我的方法)。
我认为,应与Github的Grunt开发人员讨论自定义选项。
。到目前为止我的答案
所以我会回答什么...
我上面的示例是正确的,只要一个人可以接受长期选择。
我将在有更多信息后立即更新此问题。:)
也许我缺少一些东西,但是您需要对两者进行测试:
var environment = grunt.option("E") || grunt.option("environment");
值得一提的是,作为要使用增长的命令行参数的数量,您 will 与Grunt在内部使用的一些参数碰撞。<<<<<<<<<<<<<<
我解决了nopt-grunt
的问题来自插件作者:
咕unt很棒。Grunt对使用其他命令行选项的支持并不是很棒。当前的文档具有误导性,因为它们给出了使用布尔标志和带有值的选项的示例,但是他们并不告诉您它只能使用单个选项使用。尝试使用多个选项,并迅速崩溃。
***我之前发布了此信息,但是我在命令行参数方面度过了糟糕的时光,当您在Grount中使用"命令行"参数时,这一点很高。绝对值得检查