Il est vrai que le process.agrv intégré a été utilisé pour le traitement précédent. Cela peut fonctionner, mais ce n'est pas facile à utiliser, alors TJ master en a écrit un, mon dieu, qui est complètement supérieur :
1.Installation
commandant d'installation npm
2. Analyse des options
Les options avec commander sont définies avec la méthode .option(), servant également de documentation pour les options. L'exemple ci-dessous analyse les arguments et les options de process.argv, laissant les arguments restants comme tableau program.args qui n'ont pas été consommés par. options.
#!/usr/bin/env noeud
/**
* Dépendances du module.
*/
var programme = require('commander');
programme
.version('0.0.1')
.option('-p, --peppers', 'Ajouter des poivrons')
.option('-P, --pineapple', 'Ajouter un ananas')
.option('-b, --bbq', 'Ajouter de la sauce barbecue')
.option('-c, --cheese [type]', 'Ajouter le type de fromage spécifié [marbre]', 'marbre')
.parse(process.argv);
console.log('tu as commandé une pizza avec :');
if (program.peppers) console.log(' - peppers');
if (program.pineapple) console.log(' - ananas');
if (program.bbq) console.log(' - bbq');
console.log(' - %s cheese', program.cheese);
Les indicateurs courts peuvent être transmis sous la forme d'un seul argument, par exemple -abc est équivalent à -a -b -c. Les options à plusieurs mots telles que « –template-engine » sont en casse chameau, devenant program.templateEngine etc.
3. Générer automatiquement des informations d'aide
$ ./exemples/pizza --help
Utilisation : pizza [options]
Options :
-V, --version affiche le numéro de version
-p, --poivres Ajouter des poivrons
-P, --pineapple Ajouter l'ananas
-b, --bbq Ajouter la sauce barbecue
-c, --cheese Ajouter le type de fromage spécifié [marbre]
-h, --help affiche les informations d'utilisation
Bien sûr, vous pouvez également le générer manuellement :
#!/usr/bin/env noeud
/**
* Dépendances du module.
*/
var programme = require('../');
liste de fonctions (val) {
Retour val.split(',').map(Number);
>
programme
.version('0.0.1')
.option('-f, --foo', 'active some foo')
.option('-b, --bar', 'activer une barre')
.option('-B, --baz', 'activer certains baz');
// doit être avant .parse() puisque
// L'émission() du nœud est immédiate
program.on('--help', function(){
console.log(' Exemples :');
console.log('');
console.log(' $ custom-help --help');
console.log(' $custom-help -h');
console.log('');
});
programme.parse(process.argv);
console.log('truc');
4. Donnez un exemple complet
plage de fonctions (val) {
return val.split('..').map(Number);
>
liste de fonctions (val) {
return val.split(',');
>
function collect(val, mémo) {
memo.push(val);
retourner le mémo ;
>
fonction augmenterVerbosité(v, total) {
retourner le total 1 ;
>
programme
.version('0.0.1')
.usage('[options]
')
.option('-i, --integer ', 'Un argument entier', parseInt)
.option('-f, --float ', 'Un argument flottant', parseFloat)
.option('-r, --range ..', 'Une plage', plage)
.option('-l, --list ', 'Une liste', liste)
.option('-o, --optional [value]', 'Une valeur facultative')
.option('-c, --collect [value]', 'Une valeur répétable', collect, [])
.option('-v, --verbose', 'Une valeur qui peut être augmentée', IncreaseVerbosity, 0)
.parse(process.argv);
console.log('int: %j', program.integer);
console.log(' float: %j', program.float);
console.log('facultatif : %j', program.optional);
programme.range = programme.range || [];
console.log(' range: %j..%j', program.range[0], program.range[1]);
console.log('liste : %j', programme.list);
console.log('collect: %j', program.collect);
console.log('verbosité : %j', program.verbose);
console.log(' args : %j', program.args);