Las aplicaciones de línea de comandos (CLI) están cobrando cada vez más importancia en el entorno de desarrollo, y Node.js facilita considerablemente su creación. Aprender a programar un CLI básico utilizando Node.js y sus herramientas esenciales optimizará las actividades cotidianas en la consola.
¿Qué es una aplicación CLI y para qué sirve?
Una aplicación CLI (Command Line Interface) es una herramienta ejecutable desde la terminal, ideal para tareas rápidas o repetitivas del desarrollador. Node.js no solo permite construir estas aplicaciones, sino que trae incorporado Node REPL, que simula una consola de JavaScript donde puedes probar rápidamente comandos y funciones.
Al ejecutar node en la terminal, se lanza una interfaz REPL que proporciona opciones tales como:
- Ejecutar código JavaScript directamente.
- Comandos para manipular archivos o código temporalmente.
- Herramientas como
break, clear, exit y más.
¿Cómo crear tu primera app CLI con Node.js?
Para empezar con una CLI básica, sigue estos pasos:
- Crea una carpeta llamada
CLI.
- En esta carpeta, crea un archivo
hello-cli.js.
- Añade un comentario especial llamado Shibank al principio del archivo, indicando que será ejecutado con Node:
Este comentario especial orienta al sistema sobre cómo ejecutar el script.
Herramientas esenciales para la creación de CLIs en Node.js
Dos módulos fundamentales en Node.js para construir aplicaciones CLI son:
readline: permite obtener entradas desde la terminal.
process.argv: proporciona un arreglo con los argumentos con que se llamó al script.
Estos módulos son incluidos fácilmente en tu archivo de JavaScript:
const readline = require('readline');
const [nodeExecPath, scriptPath, ...args] = process.argv;
Cómo capturar y utilizar entradas por terminal
Utilizando readline, es posible realizar preguntas al usuario desde la CLI y capturar sus respuestas. Se configura creando una interfaz entre los streams de entrada y salida del proceso:
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Ingresa un número: ', numero => {
console.log(`El número ingresado es: ${numero}`);
rl.close();
process.exit(0);
});
Este ejemplo muestra cómo se puede solicitar una entrada del usuario y manejarla adecuadamente.
Ejecución y permisos en sistemas operativos Unix
En sistemas operativos como Linux o Mac, es necesario asignar permisos de ejecución al archivo CLI:
Luego, ejecuta el archivo directamente desde la terminal con:
Si agregas argumentos, el script reconocerá y mostrará esas variables adicionales, por ejemplo:
./hello-cli.js parametro1=valor1 parametro2=valor2
¿Cómo trabajamos con señales para gestionar flujos?
Finalmente, las señales permiten responder a eventos como Ctrl+C. Escuchar estas señales en Node.js asegura un manejo de errores robusto en las aplicaciones CLI.
process.on('SIGINT', () => {
console.log('Se recibió Ctrl+C.');
process.exit(0);
});
Esta técnica permite controlar su aplicación CLI de manera fluida y eficaz.