我正在尝试使用 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'
}
不带参数的选项将被简单地忽略,这可能不是您想要的。
没有数组
:
const cli = yargs
.option('keyword', {
alias: 'k',
type: 'string',
})
.argv;
console.log(yargs)
您将得到以下输出:
{
_: [],
keyword: [ '', 'this', 'that' ],
k: [ '', 'this', 'that' ],
'$0': 'bin/program.js'
}
这意味着空参数被保存在结果中。
关于javascript - yargs 选项的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61413192/