2014-11-21 5 views
5

ich habe folgende commander Befehl mit mehreren Argumenten:Commander können nicht mehrere Befehlsargumente behandeln

var program = require('commander'); 

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

program.parse(process.argv); 

den App liefert das folgende Ergebnis:

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

Wie Sie sehen können, wird die Aktion empfängt das erste Argument (<id>) und program, erhält aber nicht das zweite Argument: [name].

Ich habe versucht:

  • [name] ein erforderliches Argument zu machen.
  • Übergeben Sie den Namen, der nicht in das Werkzeug eingegeben wurde, über die Befehlszeile.
  • Vereinfachen Sie meine reale Anwendung in das kleine reproduzierbare Programm oben.
  • ein Argument variadische Verwendung für name (rename <id> [name...]), aber dies führt sowohl 1 und Hello als erster Parameter zur Aktion in der gleichen Anordnung zugeordnet ist, um den Zweck zu besiegen id zu haben.

Was fehlt mir? Akzeptiert der Kommandant nur ein Argument pro Befehl (sieht in der Dokumentation nicht so aus)?

Antwort

1

Ich denke, das war ein Fehler in einer alten Version von commander. Dies funktioniert jetzt mit [email protected].

Verwandte Themen