我有以下commander命令,其中包含多个参数:
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
。我错过了什么? commander是否只接受每个命令一个参数(在文档中看起来不是这样)?
答案 0 :(得分:1)
我认为这是旧版commander
中的错误。这适用于commander@2.9.0
。
答案 1 :(得分:0)
我遇到了同样的问题,并决定使用支持该功能的Caporal。您可以找到一个multiple commands here
的示例