Frameworks CLI para TypeScript: revisión completa y ejemplos de uso

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Frameworks CLI para TypeScript: creando potentes aplicaciones de consola



El desarrollo moderno con TypeScript es impensable sin la creación de herramientas de línea de comandos (CLI). Ya sea un empaquetador de proyectos, un generador de código o una utilidad de automatización, todo desarrollador ha considerado al menos una vez escribir su propio programa de consola. En este artículo, analizaremos en detalle los mejores frameworks CLI para TypeScript, sus características y proporcionaremos ejemplos prácticos de código.



¿Por qué necesitas un framework CLI?



Escribir una CLI «desde cero» no solo implica procesar argumentos de línea de comandos, sino también gestionar subcomandos, validar entradas, generar salida con colores y mostrar indicaciones interactivas. El framework se encarga de las tareas rutinarias, permitiéndote concentrarte en la lógica de negocio. TypeScript añade tipado estricto, lo que es especialmente valioso al desarrollar aplicaciones de consola complejas.



Top 4 frameworks CLI para TypeScript



1. Commander.js



El framework más popular (más de 30 millones de descargas por semana). Es ideal para crear CLI complejas de múltiples niveles con subcomandos, opciones y generación automática de ayuda.



Instalación:

npm install commander


Ejemplo de aplicación básica:

import { Command } from 'commander';

const program = new Command();

program .name('greet') .description('CLI para saludos') .version('1.0.0');

program .command('hello') .argument('<name>', 'nombre del usuario') .option('-l, --lang <lang>', 'idioma del saludo', 'ru') .action((name, options) => { const greetings: Record<string, string> = { ru: 'Привет', en: 'Hello', de: 'Hallo' }; const greeting = greetings[options.lang] || greetings.ru; console.log(`${greeting}, ${name}!`); });

program.parse();


Ejecución:

npx ts-node index.ts hello Iván --lang en# Salida: Hello, Iván!


2. Inquirer.js



Biblioteca para crear indicaciones interactivas en la terminal. Permite hacer preguntas, seleccionar opciones, ingresar contraseñas y mucho más. Se combina excelentemente con Commander.



Instalación:

npm install inquirer @types/inquirer


Ejemplo de encuesta interactiva:

import inquirer from 'inquirer';

interface Answers { name: string; role: string; experience: number;}

async function main() { const answers: Answers = await inquirer.prompt([ { type: 'input', name: 'name', message: '¿Cómo te llamas?', validate: (input: string) => input.length > 0 || 'El nombre no puede estar vacío' }, { type: 'list', name: 'role', message: '¿Cuál es tu rol?', choices: ['Frontend', 'Backend', 'Fullstack', 'DevOps'] }, { type: 'number', name: 'experience', message: '¿Años de experiencia?', default: 1 } ]);

console.log(`✅ ${answers.name}, eres ${answers.role} con ${answers.experience} años de experiencia.`);}

main();


3. Clack



Framework moderno de los creadores de Astro. Se distingue por su API minimalista, hermosas animaciones y soporte nativo para TypeScript. Ideal para prototipado rápido.



Instalación:

npm install @clack/prompts


Ejemplo con selección de color:

import * as clack from '@clack/prompts';

async function main() { clack.intro('Selección de color');

const color = await clack.select({ message: 'Elige tu color favorito:', options: [ { value: 'red', label: 'Rojo' }, { value: 'green', label: 'Verde' }, { value: 'blue', label: 'Azul' } ] });

clack.note(`Has seleccionado: ${color}`); clack.outro('¡Gracias por tu elección!');}

main();


4. Yargs



Potente analizador de argumentos

Recommendations