Frameworks CLI para TypeScript: criando aplicações de console poderosas
O desenvolvimento moderno com TypeScript é impensável sem ferramentas de linha de comando (CLI). Seja para compilar um projeto, gerar código ou automatizar tarefas — uma interface CLI de qualidade aumenta a produtividade do desenvolvedor. Neste artigo, veremos os melhores frameworks para criar CLI em TypeScript, suas características e exemplos práticos.
Por que usar um framework CLI?
Criar uma CLI do zero é uma tarefa trabalhosa. Os frameworks fornecem soluções prontas para:
- Análise de argumentos de linha de comando
- Criação de hierarquia de comandos (subcomandos)
- Geração automática de ajuda (
--help) - Tratamento de erros e validação de entrada
- Dicas interativas (autocompletar)
- Saída colorida e barras de progresso
Principais frameworks CLI para TypeScript
1. Commander.js
O framework mais popular para Node.js CLI. Destaca-se pela simplicidade e flexibilidade. Ideal para projetos de qualquer tamanho.
import { Command } from 'commander';
const program = new Command();
program .name('my-cli') .description('Exemplo de aplicação CLI') .version('1.0.0');
program .command('greet') .argument('<name>', 'Nome do usuário') .option('-l, --language <lang>', 'Idioma da saudação', 'pt') .action((name, options) => { const greetings: Record<string, string> = { pt: `Olá, ${name}!`, en: `Hello, ${name}!`, es: `¡Hola, ${name}!`, }; console.log(greetings[options.language] || greetings['pt']); });
program.parse(process.argv);Vantagens do Commander:
- API intuitiva
- Suporte nativo a TypeScript
- Fácil integração com outras bibliotecas
- Grande comunidade e documentação
2. Ink (React para CLI)
Framework único que permite construir interfaces CLI usando componentes React. Ideal para aplicações interativas com UI rica.
import React, { useState } from 'react';import { render, Text, Box, useInput } from 'ink';
const Counter = () => { const [count, setCount] = useState(0);
useInput((input) => { if (input === 'q') process.exit(0); if (input === '+') setCount(c => c + 1); if (input === '-') setCount(c => c - 1); });
return ( <Box flexDirection="column" alignItems="center"> <Text color="green" bold>Contador: {count}</Text> <Text dimColor>Pressione + ou - para alterar, q para sair</Text> </Box> );};
render(<Counter />);Vantagens do Ink:
- Abordagem baseada em componentes (familiar para desenvolvedores React)
- Atualização automática da interface
- Suporte a animações e barras de progresso
- Personalização flexível da saída
3. Oclif (Heroku CLI Engine)
Framework dos criadores do Heroku CLI. Oferece um poderoso gerador de projetos e suporte integrado a plugins. Ideal para soluções empresariais.
import { Command, Flags } from '@oclif/core';
export class Greet extends Command { static description = 'Saudação ao usuário';
static flags = { name: Flags.string({ char: 'n', description: 'Nome', required: true }), uppercase: Flags.boolean({ char: 'u', description: 'Maiúsculas' }), };
async run(): Promise<void> { const { flags } = await this.parse(Greet); let message = `Olá, ${flags.name}!`; if (flags.uppercase) message = message.toUpperCase(); this.log(message); }}Vantagens do Oclif:
- Geração automática de CLI (via
npx oclif generate) - Sistema de teste integrado
- Suporte a hooks e plugins
Também na biblioteca
Monitoramento de aplicações PHP: guia completo sobre ferramentas e bibliotecas
Cliente HTTP para Swift (iOS/macOS): top bibliotecas 2024
bcrypt em Go: guia completo com exemplos práticos
Migrações de banco de dados em TypeScript: guia completo sobre ferramentas e abordagens
Biblioteca Padrão Go (Golang): visão geral completa