Saltar al contenido

¿Cómo paso argumentos de línea de comando a un programa Node.js?

No dudes en compartir nuestro espacio y códigos con tus amigos, danos de tu ayuda para aumentar esta comunidad.

Solución:

Método estándar (sin biblioteca)

Los argumentos se almacenan en process.argv

Aquí están los documentos de nodo sobre el manejo de argumentos de línea de comando:

process.argv es un array que contiene los argumentos de la línea de comandos. El primer elemento será ‘nodo’, el segundo elemento será el nombre del archivo JavaScript. Los siguientes elementos serán cualquier argumento de línea de comando adicional.

// print process.argv
process.argv.forEach(function (val, index, array) 
  console.log(index + ': ' + val);
);

Esto generará:

$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four

Para normalizar los argumentos como recibiría una función javascript regular, hago esto en mis scripts de shell node.js:

var args = process.argv.slice(2);

Tenga en cuenta que el primer argumento suele ser la ruta a nodejs, y el segundo argumento es la ubicación del script que está ejecutando.

el actualizado Correcto respuesta para esto es usar la biblioteca minimalista. Solíamos usar node-optimist pero desde entonces ha quedado obsoleto.

Aquí hay un ejemplo de cómo usarlo tomado directamente de la documentación de minimist:

var argv = require('minimist')(process.argv.slice(2));
console.dir(argv);

$ node example/parse.js -a beep -b boop
 _: [], a: 'beep', b: 'boop' 

$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
 _: [ 'foo', 'bar', 'baz' ],
  x: 3,
  y: 4,
  n: 5,
  a: true,
  b: true,
  c: true,
  beep: 'boop' 

Te mostramos las comentarios y valoraciones de los usuarios

Si te ha resultado de ayuda este artículo, sería de mucha ayuda si lo compartes con el resto desarrolladores así nos ayudas a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *