1

我正在尝试使用 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有或没有选项的选项?

4

1 回答 1

1

事实证明,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'
}

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

于 2020-04-25T07:58:03.307 回答