Creación de aplicaciones CLI en TypeScript: visión general de frameworks y herramientas

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



Desarrollar interfaces de línea de comandos (CLI) en TypeScript no es solo escribir un analizador de argumentos. Las aplicaciones CLI modernas pueden ser interactivas, coloridas, soportar autocompletado e incluso mostrar gráficos animados. Para ello, existen frameworks y bibliotecas especializados. En este artículo, analizaremos cuatro herramientas clave para crear CLI en TypeScript: Commander.js, Ink, Oclif y Yargs. Conocerás sus puntos fuertes, obtendrás ejemplos de código listos para usar y entenderás qué herramienta se adapta mejor a tu tarea.



1. Commander.js — clásico y sencillez



Commander.js es el framework más popular para crear CLI en Node.js y TypeScript. Ofrece una API declarativa para describir comandos, argumentos y opciones. Gracias al soporte integrado de TypeScript, obtienes autocompletado y verificación de tipos.



Características principales:

  • Generación automática de ayuda (--help).
  • Soporte para comandos anidados (subcomandos).
  • Validación de argumentos obligatorios.
  • Sistema flexible de opciones: booleanas, de cadena, con valores predeterminados.


Ejemplo de una CLI simple con Commander.js + TypeScript:

import { Command } from 'commander';

const program = new Command();

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

program .command('hello') .argument('<name>', 'Nombre del usuario') .option('-l, --lang <language>', 'Idioma del saludo', 'es') .action((name, options) => { if (options.lang === 'en') { console.log(`Hello, ${name}!`); } else { console.log(`¡Hola, ${name}!`); } });

program.parse(process.argv);


Commander.js es ideal para utilidades simples y scripts de automatización. No está sobrecargado con dependencias innecesarias y está bien documentado.



2. Ink — CLI reactivo con componentes



Ink es un framework único que permite construir interfaces CLI utilizando componentes similares a React. Escribes en JSX e Ink lo renderiza en la terminal. Combinado con TypeScript, obtienes una tipificación estricta de los componentes.



Características clave:

  • Enfoque basado en componentes: <Text>, <Box>, <Spacer>.
  • Actualización automática al cambiar el estado (reactividad).
  • Soporte para animaciones, indicadores de carga, barras de progreso.
  • Integración profunda con hooks de React (useInput, useApp).


Ejemplo de una CLI interactiva con Ink:

import React, { useState } from 'react';import { render, Text, Box, useInput } from 'ink';

const Counter = () => { const [count, setCount] = useState(0);

useInput((input) => { if (input === '+') setCount(prev => prev + 1); if (input === '-') setCount(prev => prev - 1); });

return ( <Box> <Text>Contador: {count}. Presiona '+' o '-'</Text> </Box> );};

render(<Counter />);


Ink es adecuado para utilidades interactivas complejas, asistentes de instalación, paneles en la terminal. Es la mejor opción si necesitas una interfaz atractiva y receptiva.



3. Oclif — framework para CLI escalables



Oclif (Open CLI Framework) de Heroku es un framework completo para crear aplicaciones CLI de cualquier complejidad. Soporta plugins, actualización automática, hooks y generación de proyectos.



Puntos fuertes:

  • Generador de código integrado (oclif generate).
  • Soporte para TypeScript listo para usar.
  • Sistema de plugins para ampliar la funcionalidad.
  • Actualización automática de la CLI a través de npm.


Ej

Recommendations