我正在尝试用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,不管有没有选项?
发布于 2020-04-25 15:58:03
事实证明,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'
}这意味着空参数将保存在结果中。
https://stackoverflow.com/questions/61413192
复制相似问题