Commander.js: Criando aplicações de console poderosas em Node.js
No mundo do desenvolvimento web moderno e da automação, as aplicações de console (CLI) desempenham um papel fundamental. Elas permitem automatizar tarefas rotineiras, gerenciar projetos, implantar código e interagir com APIs sem usar uma interface gráfica. Se você programa em JavaScript (Node.js), a melhor escolha para criar ferramentas CLI elegantes e funcionais é o framework Commander.js.
Commander.js é uma biblioteca leve, mas incrivelmente poderosa, que cuida de toda a rotina de análise de argumentos de linha de comando, geração de ajuda e tratamento de erros. Com ela, você pode transformar um script simples em uma aplicação de console profissional com suporte a subcomandos, opções e validação automática. Neste artigo, vamos detalhar como usar o Commander.js no site educacional pythonlib.ru para criar suas próprias utilitários CLI.
Instalação e uso básico
Antes de começar, certifique-se de ter o Node.js instalado (versão 12 ou superior). A instalação do Commander.js é feita via npm:
npm install commanderApós a instalação, crie um arquivo cli.js e importe a biblioteca. Vejamos um exemplo simples — uma aplicação que exibe "Hello, World!" e aceita o nome do usuário.
#!/usr/bin/env nodeconst { Command } = require('commander');const program = new Command();
program .name('greet') .description('Exibe uma saudação') .version('1.0.0');
program .command('hello') .description('Sauda o usuário') .argument('<name>', 'Nome do usuário') .action((name) => { console.log(`Olá, ${name}! Bem-vindo ao Commander.js.`); });
program.parse(process.argv);Agora execute o script:
node cli.js hello JoãoVocê verá: Olá, João! Bem-vindo ao Commander.js.
Principais recursos do Commander.js
O Commander.js oferece um rico conjunto de funções para criar aplicações CLI profissionais. Vamos detalhá-los a seguir.
1. Comandos e subcomandos
Você pode criar um número ilimitado de comandos (por exemplo, init, build, deploy) e aninhá-los uns nos outros. Isso é especialmente útil para ferramentas complexas, como gerenciadores de pacotes ou bundlers de projetos.
program .command('init') .description('Inicializa um novo projeto') .option('-t, --template <type>', 'Template do projeto (basic, advanced)') .action((options) => { console.log(`Criando projeto com o template: ${options.template || 'basic'}`); });2. Opções (flags)
As opções permitem que o usuário passe parâmetros adicionais. O Commander.js suporta flags curtas (-v) e longas (--verbose), além de valores obrigatórios e opcionais.
program .option('-d, --debug', 'Ativar modo de depuração') .option('-p, --port <number>', 'Porta do servidor', '3000') // valor padrão .parse(process.argv);
if (program.opts().debug) { console.log('Depuração ativada');}3. Argumentos de comando
Argumentos são parâmetros posicionais que o usuário passa após o comando. Eles podem ser obrigatórios (<name>) ou opcionais ([name]).
program .command('copy <source> [destination]') .description('Copia o arquivo de source para destination') .action((source, destination) => { console.log(`Copiando de ${source} para ${destination || 'a pasta atual'}`); });4. Ajuda automática e versionamento
O Commander.js gera automaticamente a ajuda quando a flag --help é usada ou
Também na biblioteca
Criação de aplicações CLI em TypeScript: visão geral de frameworks e ferramentas
ExcelJS para JavaScript (Node.js): guia completo com exemplos práticos
LeakCanary para Kotlin: guia completo com exemplos práticos
OkHttp para Java: guia completo com exemplos práticos
ts-node-dev para TypeScript: guia completo com exemplos