1

使用 yargs 16.2.0,我定义了一些嵌套选项并通过配置文件提供它们,但 yargs 仍然声称它们丢失了:

亚格斯

yargs
  .command('do-stuff', 'Does some neat stuff.', o => o
    .option('test.something', {
      type: 'string',
      demandOption: true,
      requiresArg: true,
    })
  )
  .strict()
  .demandCommand()
  .config('env')
  .help()
  .argv;

配置文件

{
  "test": {
    "something": "blah"
  }
}

通过...执行

> node index.js -- do-stuff --env config.json

index.js do-stu

Does some neat stuff.

Options:
  --version         Show version number                                [boolean]
  --env             Path to the environment config JSON from which to load
                    arguments.
  --help            Show help                                          [boolean]
  --test.something                                           [string] [required]

Missing required argument: test.something

然后我编辑node_modules/yargs-parser/build/index.cjs原始hereargv )并在解析配置JSON后添加了一行注销:

setConfigObject(config);            // line 630, existing
console.log(JSON.stringify(argv));  // added for debugging

结果输出:

{
    "_": ["do-stuff"],
    "env": "config.json",
    "test":
    {
        "something": "blah"
    }
}

我在node_modules/yargs/build/index.cjs第 1472 行之后(就在显示“缺少所需参数”消息之前,并且 JSON 输出仍然包含该test.something参数之前)进行了相同的更改。


那么,为什么 yargs 声称我的论点没有提供,甚至argv表明它们是?

4

1 回答 1

0

这是 yargs 中的错误或不受支持的用例:https ://github.com/yargs/yargs/issues/1782

于 2021-02-19T18:51:39.253 回答