我有以下带有多个参数的指挥官命令:
var program = require('commander');
program
.command('rename <id> [name]')
.action(function() {
console.log(arguments);
});
program.parse(process.argv);使用该应用程序将产生以下结果:
$ node app.js 1 "Hello"
{ '0': '1',
'1':
{ commands: [],
options: [],
_execs: [],
_args: [ [Object] ],
_name: 'rename',
parent:
{ commands: [Object],
options: [],
_execs: [],
_args: [],
_name: 'app',
Command: [Function: Command],
Option: [Function: Option],
_events: [Object],
rawArgs: [Object],
args: [Object] } } }如您所见,该操作接收第一个参数(<id>)和program,但不接收第二个参数:[name]。
我试过:
[name]成为必需的参数。name (rename <id> [name...])的变量参数,但是这会导致1和Hello都被分配到同一个数组中作为第一个要操作的参数,这就违背了使用id的目的。我遗漏了什么?指挥官是否只接受每个命令中的一个参数(在文档中看起来不是这样)?
发布于 2016-02-11 23:09:15
我认为这是旧版本的commander中的一个bug。这一点现在适用于commander@2.9.0。
发布于 2018-08-04 07:00:24
我遇到了同样的问题,决定改用羊驼。
下面是他们在创建命令上的文档中的一个例子
在编写复杂程序时,您可能希望管理多个命令。使用
.command()方法指定它们:
program
// a first command
.command("my-command", "Optional command description used in help")
.argument(/* ... */)
.action(/* ... */)
// a second command
.command("sec-command", "...")
.option(/* ... */)
.action(/* ... */)https://stackoverflow.com/questions/27066200
复制相似问题