Es cierto que el procesamiento anterior usó el proceso incorporado.Agrv, que puede funcionar, pero no es fácil trabajar, por lo que el maestro TJ escribió un "My God", que es completamente de alta gama:
1. Instalación
La copia del código es la siguiente:
Comandante de instalación de NPM
2. Análisis de opciones
Las opciones con Commander se definen con el método .option (), que también sirven como documentación para las opciones. El ejemplo a continuación analiza args y opciones de Process.argv, dejando a los args restantes como la matriz de programas.
La copia del código es la siguiente:
#!/usr/bin/env nodo
/**
* Dependencias del módulo.
*/
programa var = requirir ('comandante');
Programa
.versión ('0.0.1')
.option ('-p, --peppers', 'Agregar pimientos')
.option ('-P,--PineApple', 'Agregar piña')
.option ('-b, --bbq', 'Agregar salsa BBQ')
.option ('-c, --cheese [tipo]', 'Agregue el tipo especificado de queso [mármol]', 'mármol')
.Parse (process.argv);
console.log ('ordenó una pizza con:');
if (programa.peppers) console.log (' - peppers');
if (programa.pineApple) console.log (' - piña');
if (programa.bbq) console.log (' - bbq');
console.log (' - %s queso', programa.cheese);
Las banderas cortas pueden pasarse como un solo arg, por ejemplo -Abc es equivalente a -a -b -c. Las opciones de múltiples palabras, como el "motor de plantilla", se convierten en el programa de camello.
3. Generar automáticamente información de ayuda
La copia del código es la siguiente:
$ ./examples/pizza --help
Uso: Pizza [Opciones]
Opciones:
-V, -VERSION ENTRACIÓN el número de versión
-P, - -Peppers Agregar pimientos
-P, - -Pineapple Agregar piña
-B, --BBQ Agregar salsa BBQ
-c, -cheese <pype> Agregar el tipo especificado de queso [mármol]
-H, -Información de uso de salida de la salida
Por supuesto que también puedes generar manualmente:
La copia del código es la siguiente:
#!/usr/bin/env nodo
/**
* Dependencias del módulo.
*/
VAR programa = requirir ('../');
lista de funciones (val) {
return val.split (','). map (número);
}
Programa
.versión ('0.0.1')
.option ('-f, --foo', 'habilitar algunos foo')
.option ('-b,--bar', 'habilitar algo de bar')
.option ('-b, --baz', 'habilitar algunos baz');
// debe ser antes .Parse () desde
// El emit () es inmediato
Program.on ('-Help', function () {
console.log ('Ejemplos:');
console.log ('');
console.log ('$ Custom-Help --help');
console.log ('$ Custom -Help -h');
console.log ('');
});
programa.Parse (process.argv);
console.log ('cosas');
4. Dar un ejemplo completo
La copia del código es la siguiente:
rango de funciones (val) {
return val.split ('..'). map (número);
}
lista de funciones (val) {
return val.split (',');
}
function Collect (val, memo) {
memo.push (val);
Memo de regreso;
}
Función aumentandoverbosidad (v, total) {
Total de retorno + 1;
}
Programa
.versión ('0.0.1')
.Usage ('[Opciones] <archivo ...>')
.option ('-i, --integer <n>', 'un argumento entero', parseint)
.option ('-f, --float <n>', 'un argumento de flotación', parsefloat)
.option ('-r,--range <a> .. <b>', 'un rango', rango)
.option ('-l, --list <emems>', 'una lista', lista)
.option ('-o, --optional [valor]', 'un valor opcional')
.option ('-c,--colect [valor]', 'un valor repetible', recopilar, [])
.option ('-v, --verbose', 'un valor que se puede aumentar', aumentar la verbosidad, 0)
.Parse (process.argv);
console.log ('int: %j', programa.integer);
console.log ('float: %j', programa.float);
console.log ('Opcional: %J', Program.Optional);
programa.Range = Program.Range || [];
console.log ('rango: %j .. %j', programa.range [0], programa.range [1]);
console.log ('Lista: %J', programa.list);
console.log ('coleccionar: %j', programa.collect);
console.log ('verbosidad: %j', programa.verbose);
console.log ('args: %j', programa.args);