grunt文件:如何在运行时添加命令行选项?(grunt 0.3.15 )



我如何在运行时添加和评估命令行选项?

我已经尝试过:

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中使用"命令行"参数时,这一点很高。绝对值得检查

最新更新