带有 yargs 的选项的可选参数
Optional argument to option with yargs
我正在尝试使用 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' ],
'[=11=]': 'bin/program.js'
}
没有参数的选项会被简单地忽略,这可能不是您想要的。
没有array
:
const cli = yargs
.option('keyword', {
alias: 'k',
type: 'string',
})
.argv;
console.log(yargs)
你得到这个输出:
{
_: [],
keyword: [ '', 'this', 'that' ],
k: [ '', 'this', 'that' ],
'[=13=]': 'bin/program.js'
}
这意味着结果中保存了空参数。
我正在尝试使用 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' ],
'[=11=]': 'bin/program.js'
}
没有参数的选项会被简单地忽略,这可能不是您想要的。
没有array
:
const cli = yargs
.option('keyword', {
alias: 'k',
type: 'string',
})
.argv;
console.log(yargs)
你得到这个输出:
{
_: [],
keyword: [ '', 'this', 'that' ],
k: [ '', 'this', 'that' ],
'[=13=]': 'bin/program.js'
}
这意味着结果中保存了空参数。