¿Para qué necesitas utilidades CLI en JavaScript?
Imagina: todos los días renombras manualmente carpetas de informes, conviertes JSON a CSV o buscas archivos duplicados. ¿Y si escribieras un pequeño programa que haga esto en un segundo con un comando en la terminal? Para eso sirven las utilidades CLI en JavaScript.
A diferencia de las aplicaciones web completas, la CLI (Interfaz de Línea de Comandos) es una herramienta ligera, rápida y muy conveniente. No requiere navegador, funciona en cualquier plataforma y se integra fácilmente en scripts de CI/CD. En PythonLib a menudo hablamos de automatización, y hoy te mostraré cómo crear tu primera utilidad CLI en Node.js desde cero. ¡Te sorprenderá lo sencillo que es!
En este artículo recorreremos el camino completo: desde la configuración del proyecto hasta la publicación del paquete terminado en npm. No solo obtendrás teoría, sino código funcional que puedes adaptar inmediatamente a tus propias tareas.
¿Qué es una utilidad CLI y por qué JavaScript?
Una utilidad CLI es un programa que se ejecuta desde la línea de comandos. Escribes my-tool --input file.txt y realiza la acción deseada. JavaScript es ideal para esto porque:
- Node.js está instalado en cada servidor y en casi todos los PC de desarrolladores.
- Una enorme cantidad de módulos listos (npm) para trabajar con archivos, redes y formatos de datos.
- Simplicidad de escritura: no necesita compilación, basta con un solo archivo.
- Multiplataforma: tu herramienta funcionará en Windows, macOS y Linux.
Incluso si eres principiante en Node.js, podrás hacerlo. Empezaremos con lo más simple: un script que muestra un saludo.
Paso 1: Configuración del proyecto para la utilidad CLI
Crea una carpeta para tu proyecto e inicializa npm:
mkdir my-first-clicd my-first-clinpm init -yAhora abre package.json. Este es el archivo de configuración principal de tu futura utilidad CLI en JavaScript. Agrega el campo "bin":
{ "name": "my-first-cli", "version": "1.0.0", "description": "Mi primera utilidad CLI", "bin": { "greet": "./index.js" }, "license": "MIT"}El campo "bin" es la magia. Le dice a Node.js: «Cuando el usuario escriba el comando greet, ejecuta el archivo index.js». Nota: el nombre del comando (greet) puede ser cualquiera.
Ahora crea index.js con la primera línea: un shebang. Esto es obligatorio para CLI:
#!/usr/bin/env node
console.log('¡Hola, mundo! ¡Soy tu primera utilidad CLI!');El shebang #!/usr/bin/env node le indica al sistema que el script debe ejecutarse con Node.js. Sin él, el comando no funcionará.
Paso 2: Hacer ejecutable la utilidad y probarla
Para ejecutar tu utilidad CLI en JavaScript localmente, ejecuta el comando:
npm linkEste comando crea un enlace global a tu paquete. Ahora, en cualquier terminal puedes escribir:
greetY verás: ¡Hola, mundo! ¡Soy tu primera utilidad CLI! ¡Felicidades, acabas de crear tu primera utilidad!
Paso 3: Análisis de argumentos de línea de comandos
Simplemente mostrar texto es aburrido. Las utilidades CLI reales aceptan argumentos. Aprendamos a procesarlos. Node.js tiene el array incorporado process.argv, pero para proyectos serios es mejor usar el módulo commander o yargs.
Instalemos commander:
npm install commanderAhora reescribamos index.js:
#!/usr/bin/env node
const { Command } = require('commander');const program = new Command();
program .name