Parámetros Línea de Comandos. Javascript
SOLUCIONARIO
Parámetros Línea de Comandos. Javascript
2026-03-08
Por
Occam's Razor

#!/usr/bin/nodejs

console.log (process.argv.length + " parámetros");

process.argv.forEach ((value, index) =>
              {console.log ("Parámetro "+index+ " -> " + value)});

if (process.argv.length != 3) {
    console.log ("Solo un parámetro pot favor");
    return;
}

console.log ("Hola " + process.argv[2]);

El código de este ejemplo es específico para NodeJS. Sin embargo, teniendo en cuenta que esta es quizás la forma más habitual de ejecutar código JavaScript en la consola, podemos considerarlo bastante estándar.

El enfoque es el habitual, los parámetros se pasan al programa en una matriz especial llamada process.argv. A differencia de otros lenguajes, en JavaScript sobre NodeJS, los dos primeros parámetros indican el nombre del fichero que se ejecuta. De hecho, el primero es el nombre del interprete y el segundo el del fichero JavaScript que estamos ejecutando.

Por esta razón es habitual, descartar los dos primeros parámetros:

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

Puesto que process.argv es un array, podemos acceder al número de elementos que contiene utilizando la propiedad process.argv.length.

¿SABÍAS QUÉ?

Como en muchos de los lenguajes más modernos, JavaScript no nos permite modificar el nombre del proceso cambiando los valores de argv. Podemos conseguir esto con la siguiente línea:

process.title = “MiNombreNuevo”;

Alternativamente, como en todos los casos, podemos usar exec -a Nombre node script.js o usar un módulo para llamar nativamente a pctl como por ejemplo node-setproctitle.

 

NodeJS nos ofrece multitud de paquetes para procesar los argumentos que recibimos por la línea de comandos. Existe un módulo que funciona de forma similar a getopt pero no ha sido actualizado durante años, así que, por una parte es difícil hacerlo funcionar, y por otra no tiene mucho sentido usarla, así que vamos a utilizar yargs que es un módulo más moderno.

Aseguraros de que npm está ya instalado. Luego podéis usar npm para instalar el módulo.

apt install npm
npm install yargs@17

Probando esto en Debian 13 con la versión stable de nodejs que se incluye es necesario instalar una version vieja (version 17) de yargs o cambiar el código.

SOY NOVATO

npm o el Gestor de Paquete de Node (Node Package Manager) es una utilidad que nos permite instalar (entre otras cosas) paquetes para Node.js. Utiliza un repositorio en línea donde desarrolladores de todo el mundo publican sus módulos para nodejs.

 

A modo de ejemplo os mostramos esta solución, pero quizás deberíais probar otras, las cuales, de cualquier forma, funcionan de forma muy parecida.

#!/usr/bin/env node

const yargs = require('yargs/yargs');
const { hideBin } = require('yargs/helpers');

const argv = yargs(hideBin(process.argv))
  .usage('Usage: $0 [options]')
  .option('i', {
    alias: 'input',
    type: 'string',
    describe: 'Input file name',
    default: 'input.txt'
  })
  .option('o', {
    alias: 'output',
    type: 'string',
    describe: 'Output file name',
    default: 'output.txt'
  })
  .help('h')
  .alias('h', 'help')
  .parse();

// Show selected filenames
console.log('Input file :', argv.input);
console.log('Output file:', argv.output);

Como podéis ver en el código, yargs es capaz de generar automáticamente el mensaje de ayuda a partir de los distintos campos que usamos para definir cada opción.

RESUMEN

  • Los argumentos son recibidos a través de una matriz especial process.argv
  • Los dos primeros argumentos indican el intérprete y el nombre del script JS que se ejecuta.
  • NodeJS ofrece varios paquetes para procesar los argumentos de la línea de comandos de forma fácil y sencilla.

SOBRE Occam's Razor
Somos una revista libre que intenta explicar de forma sencilla conceptos tecnológicos y científicos de los que no podemos escapar. Al final, todo es más fácil de lo que parece!

 
Tu publicidad aquí :)