2014-11-21 12 views
5

ho il commander seguente comando con più argomenti:comandante non è in grado di gestire più argomenti del comando

var program = require('commander'); 

program 
    .command('rename <id> [name]') 
    .action(function() { 
    console.log(arguments); 
    }); 

program.parse(process.argv); 

Utilizzando l'applicazione produce il seguente risultato:

$ 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] } } } 

Come si può vedere, l'azione riceve il primo argomento (<id>) e program, ma non riceve il secondo argomento: [name].

ho provato:

  • Fare [name] un argomento richiesto.
  • Passare il nome non quotato allo strumento dalla riga di comando.
  • Semplifica la mia vera app nel minuscolo programma riproducibile sopra.
  • Utilizzando un argomento variadic per name (rename <id> [name...]), ma ciò comporta sia 1 e Hello di essere designato nello stesso array come primo parametro all'azione, sconfiggere lo scopo di avere id.

Cosa mi manca? Il comandante accetta solo un argomento per comando (non appare così nella documentazione)?

risposta

1

Penso che questo fosse un bug in una vecchia versione di commander. Funziona ora con [email protected].

Problemi correlati