Es ist wahr, dass der integrierte Prozess.agrv für die vorherige Verarbeitung verwendet wurde. Dies kann funktionieren, aber es ist nicht einfach zu verwenden, also hat TJ Master einen geschrieben, mein Gott, der völlig überlegen ist:
1. Installation
npm install commander
2. Optionsanalyse
Optionen mit Commander werden mit der Methode .option() definiert, die auch als Dokumentation für die Optionen dient. Das folgende Beispiel analysiert Argumente und Optionen aus „process.argv“, wobei die verbleibenden Argumente im Array „program.args“ verbleiben, die nicht von verwendet wurden Optionen.
#!/usr/bin/env node
/**
* Modulabhängigkeiten.
*/
var program = require('commander');
Programm
.version('0.0.1')
.option('-p, --peppers', 'Paprika hinzufügen')
.option('-P, --pineapple', 'Ananas hinzufügen')
.option('-b, --bbq', 'BBQ-Sauce hinzufügen')
.option('-c, --cheese [type]', 'Fügen Sie die angegebene Käsesorte [marble] hinzu', 'marble')
.parse(process.argv);
console.log('Sie haben eine Pizza bestellt mit:');
if (program.peppers) console.log(' - Peppers');
if (program.pineapple) console.log(' - ananas');
if (program.bbq) console.log(' - bbq');
console.log(' - %s Cheese', program.cheese);
Kurze Flags können als einzelnes Argument übergeben werden, zum Beispiel ist -abc äquivalent zu -a -b -c. Mehrwortoptionen wie „–template-engine“ werden in Kamel-Schreibweise geschrieben und werden zu program.templateEngine usw.
3. Hilfeinformationen automatisch generieren
$ ./examples/pizza --help
Verwendung: Pizza [Optionen]
Optionen:
-V, --version gibt die Versionsnummer aus
-p, --peppers Paprika hinzufügen
-P, --pineapple Ananas hinzufügen
-b, --bbq BBQ-Sauce hinzufügen
-c, --cheese Füge die angegebene Käsesorte [Marmor] hinzu
-h, --help gibt Nutzungsinformationen aus
Natürlich können Sie es auch manuell generieren:
#!/usr/bin/env node
/**
* Modulabhängigkeiten.
*/
var program = require('../');
Funktionsliste(val) {
Gibt val.split(',').map(Number);
zurück
}
Programm
.version('0.0.1')
.option('-f, --foo', 'einige foo aktivieren')
.option('-b, --bar', 'einige Leiste aktivieren')
.option('-B, --baz', 'einige Baz aktivieren');
// muss vor .parse() sein, da
// emit() des Knotens erfolgt sofort
program.on('--help', function(){
console.log(' Beispiele:');
console.log('');
console.log(' $ custom-help --help');
console.log(' $ custom-help -h');
console.log('');
});
program.parse(process.argv);
console.log('stuff');
4. Geben Sie ein vollständiges Beispiel
Funktionsbereich(Wert) {
return val.split('..').map(Number);
}
Funktionsliste(val) {
return val.split(',');
}
Funktion sammeln(val, memo) {
memo.push(val);
Rücksendenotiz;
}
Funktion raiseVerbosity(v, total) {
Rückgabesumme 1;
}
Programm
.version('0.0.1')
.usage('[Optionen]
')
.option('-i, --integer ', 'Ein ganzzahliges Argument', parseInt)
.option('-f, --float ', 'Ein Float-Argument', parseFloat)
.option('-r, --range ..', 'A range', range)
.option('-l, --list ', 'A list', list)
.option('-o, --optional [Wert]', 'Ein optionaler Wert')
.option('-c, --collect [Wert]', 'Ein wiederholbarer Wert', Collect, [])
.option('-v, --verbose', 'Ein Wert, der erhöht werden kann', raiseVerbosity, 0)
.parse(process.argv);
console.log(' int: %j', program.integer);
console.log(' float: %j', program.float);
console.log(' optional: %j', program.optional);
program.range = program.range || [];
console.log(' range: %j..%j', program.range[0], program.range[1]);
console.log(' list: %j', program.list);
console.log(' Collect: %j', program.collect);
console.log(' verbosity: %j', program.verbose);
console.log(' args: %j', program.args);