Criação de aplicações CLI em TypeScript: visão geral de frameworks e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Frameworks CLI para TypeScript: criando aplicações de console poderosas



Desenvolver interfaces de linha de comando (CLI) em TypeScript não é apenas escrever um analisador de argumentos. As aplicações CLI modernas podem ser interativas, coloridas, suportar autocompletar e até exibir gráficos animados. Para isso, existem frameworks e bibliotecas especializadas. Neste artigo, vamos analisar quatro ferramentas-chave para criar CLI em TypeScript: Commander.js, Ink, Oclif e Yargs. Você conhecerá seus pontos fortes, obterá exemplos de código prontos e entenderá qual ferramenta é adequada para sua tarefa.



1. Commander.js — clássico e simplicidade



Commander.js é o framework mais popular para criar CLI em Node.js e TypeScript. Ele oferece uma API declarativa para descrever comandos, argumentos e opções. Graças ao suporte nativo a TypeScript, você obtém autocompletar e verificação de tipos.



Principais recursos:

  • Geração automática de ajuda (--help).
  • Suporte a comandos aninhados (subcomandos).
  • Validação de argumentos obrigatórios.
  • Sistema flexível de opções: booleanas, strings, com valores padrão.


Exemplo de CLI simples com Commander.js + TypeScript:

import { Command } from 'commander';

const program = new Command();

program .name('greet') .description('CLI para saudação') .version('1.0.0');

program .command('hello') .argument('<name>', 'Nome do usuário') .option('-l, --lang <language>', 'Idioma da saudação', 'pt') .action((name, options) => { if (options.lang === 'en') { console.log(`Hello, ${name}!`); } else { console.log(`Olá, ${name}!`); } });

program.parse(process.argv);


Commander.js é ideal para utilitários simples e scripts de automação. Ele não é sobrecarregado com dependências desnecessárias e é bem documentado.



2. Ink — CLI reativo com componentes



Ink é um framework único que permite construir interfaces CLI usando componentes semelhantes ao React. Você escreve em JSX, e o Ink renderiza isso no terminal. Combinado com TypeScript, você obtém tipagem estrita dos componentes.



Características principais:

  • Abordagem de componentes: <Text>, <Box>, <Spacer>.
  • Atualização automática ao alterar o estado (reatividade).
  • Suporte a animação, indicadores de carregamento, barras de progresso.
  • Integração profunda com hooks do React (useInput, useApp).


Exemplo de CLI interativa com 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}. Pressione '+' ou '-'</Text> </Box> );};

render(<Counter />);


Ink é adequado para utilitários interativos complexos, assistentes de instalação, painéis no terminal. É a melhor escolha se você precisa de uma interface bonita e responsiva.



3. Oclif — framework para CLI escaláveis



Oclif (Open CLI Framework) da Heroku é um framework completo para criar aplicações CLI de qualquer complexidade. Ele suporta plugins, atualização automática, hooks e geração de projetos.



Pontos fortes:

  • Gerador de código integrado (oclif generate).
  • Suporte a TypeScript nativo.
  • Sistema de plugins para estender a funcionalidade.
  • Atualização automática da CLI via npm.


Exe

Recommendations