Argumentos y Flags en Aplicaciones CLI con Minimist

Clase 23 de 26Curso de Node.js Avanzado

Resumen

Crear una aplicación CLI (Command Line Interface) efectiva requiere gestionar adecuadamente los argumentos que recibe desde la terminal. Utilizando Node.js y mediante el módulo Minimist, es posible manejar entradas de usuarios como argumentos de texto, booleanos o aliases de manera sencilla.

¿Cuáles son los desafíos al crear un CLI?

El primer problema que surge al desarrollar aplicaciones CLI es leer correctamente la entrada del comando proporcionada por el usuario. Es habitual que estas aplicaciones utilicen modificadores, conocidos como flags, o diferentes comandos a ejecutar, lo que hace relevante disponer de herramientas adecuadas para interpretar estos argumentos.

¿Cómo se trabaja con argumentos desde la terminal en Node.js?

Para leer y gestionar argumentos desde la terminal, podemos utilizar el módulo Minimist. Esta popular librería permite interactuar fácilmente con las variables proporcionadas por el usuario desde el proceso de Node.js.

Los argumentos recibidos en Node.js se encuentran en el arreglo process.argv. Importante recordar que:

  • La posición 0 corresponde a la ubicación del ejecutable de Node.
  • La posición 1 es el script que se está ejecutando.

Por lo tanto, los argumentos relevantes del usuario empiezan desde la posición 2, por lo que Minimist los procesa a partir de allí:

const minimist = require('minimist');
const argv = minimist(process.argv.slice(2));

¿Qué tipo de argumentos permite gestionar Minimist?

Minimist maneja diferentes tipos de argumentos, que incluyen:

  • String: para argumentos que reciben texto (nombre, rol o compañía).
  • Booleanos: argumentos que indican verdadero o falso según su presencia.

Es posible también definir valores predeterminados (defaults) y alias cortos para facilitar su uso en el CLI:

const argv = minimist(process.argv.slice(2), {
    string: ['nombre', 'rol', 'compania'],
    boolean: ['saludo'],
    default: { saludo: false },
    alias: { s: 'saludo', n: 'nombre', r: 'rol', c: 'compania' }
});

¿Cómo implementar Minimist en un proyecto nuevo?

Para implementar Minimist efectivamente en un proyecto CLI nuevo, es recomendable seguir estos pasos:

  1. Crear un nuevo archivo JavaScript en tu editor, por ejemplo NiceCLI.js.
  2. Iniciar un proyecto Node en el directorio del CLI utilizando pnpm init para generar un package.json apropiado.
  3. Instalar Minimist usando el comando:
pnpm install minimist
  1. Añadir al comienzo del script la línea shebang:
#!/usr/bin/env node
  1. Otorgar permisos de ejecución al script usando el comando:
chmod +x NiceCLI.js
  1. Ejecutar el script proporcionando argumentos directamente desde la terminal:
./NiceCLI.js --nombre Adrian --rol CTO -c NotSource --saludo

O, alternativamente:

./NiceCLI.js --nombre=Adrian --rol=CTO -c=NotSource -s

Ambas formas son válidas y Minimist automáticamente realizará el parsing adecuado:

  • Argumentos en formato largo (--nombre) y corto (-n).
  • Espaciado o signo igual (=) funcionan de manera intercambiable.
  • Valores booleanos predeterminados (false) cambian a true al ser utilizados.

Con estos pasos, gestionar los argumentos de tus aplicaciones CLI será sencillo y claro, permitiéndote ofrecer mejor usabilidad y eficacia para los usuarios de tu herramienta de línea de comandos.

¿Ya has tenido experiencia utilizando Minimist u otras herramientas similares? ¡Comparte tus impresiones en los comentarios!