Los argumentos de línea de comandos son strings de texto que se utilizan para pasar información adicional a un programa cuando se ejecuta una aplicación a través de la interfaz de línea de comandos (CLI) de un sistema operativo. En Node.js, todos los argumentos de la línea de comandos recibidos por el shell se entregan al proceso en una array llamada argv(argumentos-valores).
Usaremos dos métodos para analizar los argumentos de la línea de comandos a través de la array process.argv , así como los populares paquetes yargs
Método 1: usar process.argv: es la forma más sencilla de recibir argumentos con la ayuda de la array process.argv. Node.js expone esta array para cada proceso en ejecución en forma de process.argv . El primer elemento de la array process.argv es la ruta del sistema de archivos que apunta al archivo ejecutable de Node. El segundo elemento es la ruta del archivo JavaScript que se está ejecutando y el resto de elementos de la array son los argumentos que se pasan a través de cmd .
Nota: Los primeros dos elementos de la array process.argv siempre están presentes incluso si no pasamos ningún argumento.
Ejemplo 1: Nombre de archivo: gfg.js
Javascript
for(let i = 0; i < process.argv.length; ++i) { console.log(`index ${i} argument -> ${process.argv[i]}`); }
Ejecute el archivo gfg.js usando el siguiente comando pasando argumentos:
node gfg.js I Love GeeksforGeeks
Producción:
Ejemplo 2: Programa para realizar una operación aritmética según los argumentos pasados a través de cmd .
Nombre de archivo: arthimatic.js
Javascript
// To trim first 2 elements const arg = process.argv.slice(2); arg[1] = Number(arg[1]); arg[2] = Number(arg[2]); switch (arg[0]) { case '+': console.log(`Result of ${arg[1]} + ${arg[2]} = ${arg[1] + arg[2]}`); break; case '*': console.log(`Result of ${arg[1]} * ${arg[2]} = ${arg[1] * arg[2]}`); break; case '-': console.log(`Result of ${arg[1]} - ${arg[2]} = ${arg[1] - arg[2]}`); break; case '/': if (arg[2] == 0) { console.log( 'cannot be divided by zero!!'); } else { console.log(`Result of ${arg[1]} / ${arg[2]} = ${arg[1] / arg[2]}`); } break; case '%': if (arg[2] == 0) { console.log( 'cannot be divided by zero!!'); } else { console.log(`Result of ${arg[1]} % ${arg[2]} = ${arg[1] % arg[2]}`); } break; default: console.log( `operation cannot be performed!!`); }
Ejecute el archivo arthimatic.js pasando los siguientes argumentos:
Producción:
Método 2: usar el módulo yargs: pasar argumentos a través de cmd se vuelve tedioso cuando comenzamos a trabajar con banderas o si su servidor necesita muchos argumentos.
app -h host -p port -r -v -b --quiet -x -o outfile
Para resolver esto, podemos usar el tercer módulo de biblioteca, como yargs , para analizar los argumentos pasados a través de cmd . En este módulo, puede pasar argumentos como un par clave-valor y luego acceder a ellos con la ayuda de una clave. El .argv obtiene los argumentos como un simple objeto antiguo.
Instale el módulo yargs usando el siguiente comando:
npm install yargs --save
Ejemplo: Nombre de archivo: yarg.js
Javascript
const args = require('yargs').argv; console.log(args); console.log(`Language : ${args.language}`); console.log(`IDE : ${args.ide}`);
Para ejecutar el archivo, ejecute el siguiente comando:
Node yarg.js –language=javascript –ide=GFG_IDE comando1 comando2 –b –v
Producción:
Nota:
- argv.$0 contiene el nombre del archivo de script que se va a ejecutar.
- argv._ es una array que contiene cada elemento que no está adjunto a una opción (o indicador). Estos elementos se denominan comandos en yargs.
- Los indicadores como argv.time, argv.b, etc. pasan a ser propiedad de argv. Las banderas deben pasarse como –bandera. Ejemplo: Node app.js –b