使用 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
表明它们是?