javascript - yargs 选项的可选参数

标签 javascript command-line-interface 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' ],
  '$0': 'bin/program.js'
}

不带参数的选项将被简单地忽略,这可能不是您想要的。

没有数组:

const cli = yargs
.option('keyword', {
    alias: 'k',
    type: 'string',

})
.argv;
console.log(yargs)

您将得到以下输出:

{
  _: [],
  keyword: [ '', 'this', 'that' ],
  k: [ '', 'this', 'that' ],
  '$0': 'bin/program.js'
}

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

关于javascript - yargs 选项的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61413192/

相关文章:

Python argparse 静态参数

javascript - 将图像插入到 DOM,大小调整为其宽度/高度的 50%

c# - 在代码隐藏文件中,如何将 contentEditable ="true"属性分配给文本框?

javascript - JSON.stringify 工作不正常,为 json 的键提供额外的 ""

node.js - nodeclipse:安装后在 Linux 上找不到命令

node.js - yargs 仅采用命令行输入字符串的第一个单词

php - 获取输入框中的url值

php - Codeigniter 通过 CLI 将数组传递给 Controller

node.js - 面对这个错误 : TypeError: yargs. 命令不是函数

javascript - Gulp 任务根据参数具有不同的源