带yargs的选项的可选参数

问题描述 投票:0回答: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

javascript command-line-interface yargs
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.