【问题标题】:Get multiple command option using commander使用指挥官获取多个命令选项
【发布时间】:2019-06-12 17:38:45
【问题描述】:

我正在使用 Nodejs 和指挥官创建一个 CLI,我需要实现这样的选项/命令。

--create user --f-name="Kevin"

我尝试了各种选择,但都可以正常工作

#!/usr/bin/env node
const program = require("commander");

function collect(val, memo) {
  memo.push(val);
  return memo;
}

program.version("0.0.1", "-v, --version")
.option(
    "-c, --create <items>",
    "Create user",
    collect,
    []
  ).parse(process.argv);

console.log(' collect: %j', program.create );

仅当我像这样执行--create user,a,d,v 并且它给出一个数组收集时才有效:[“user,a,d,v”]。关于如何使用 Commander.js

实现这一点的任何想法

【问题讨论】:

  • 我不确定我是否理解您要执行的操作。我从标题和代码中假设您想为 --create 提供多个值,看起来您很接近,但您的示例中的 --f-name 是什么?

标签: node.js command-line-interface node-commander


【解决方案1】:

试试这个脚本:

program
  .option('-c, --create', 'Create User')
  .option('-un, --user-name <type>', 'Username');
  
program.parse(process.argv);

console.log(program.userName, `userName: ${program.userName}`)

然后从终端像这样执行:

node command.js --create user --user-name=NameUser

【讨论】:

  • 我需要检查用户在标志--create之后输入的值/命令。在这种情况下,它将是 user
  • 好的:.option('-c, --create &lt;type&gt;', 'Create User') 请注意,我在--create 之后添加了 ,然后您可以使用类似 program.create === "user" 的比较或使用 switch 语句。
  • 小修正,短选项标志只有一个字符所以-u-n,但不是-un
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 2017-10-03
  • 2014-12-06
  • 1970-01-01
相关资源
最近更新 更多