我正在尝试使用yargs构建命令行界面,其中一个选项带有一个(可选!)参数:
const cli = yargs
.array('keyword')
.option('keyword', {
alias: 'k',
type: 'string',
describe: 'add additional keyword or clear previous keywords without an argument'
)
.argv;
换言之,接受用法program --keyword --keyword=this --keyword=that
。
我如何告诉yargs接受带有或不带有选项的选项--keyword
?
事实证明,yargs将始终接受选项的空参数。行为根据选项是否为数组选项而有所不同。
如果运行programm --keyword --keyword=this --keyword=that
,并且如果您这样定义选项:
const cli = yargs
.array('keyword')
.option('keyword', {
alias: 'k',
type: 'string',
})
.argv;
console.log(yargs)
您得到此输出:
{
_: [],
keyword: [ 'this', 'that' ],
k: [ 'this', 'that' ],
'$0': 'bin/program.js'
}
没有参数的选项将被忽略,这可能不是您想要的。
没有array
:
const cli = yargs
.option('keyword', {
alias: 'k',
type: 'string',
})
.argv;
console.log(yargs)
您得到此输出:
{
_: [],
keyword: [ '', 'this', 'that' ],
k: [ '', 'this', 'that' ],
'$0': 'bin/program.js'
}
这意味着将空参数保存在结果中。