带有 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'
}

这意味着结果中保存了空参数。