Frameworks CLI pour TypeScript : créons des applications console puissantes
Le développement moderne en TypeScript est impensable sans la création d'outils en ligne de commande (CLI). Qu'il s'agisse d'un assembleur de projets, d'un générateur de code ou d'un utilitaire d'automatisation — chaque développeur a au moins une fois envisagé d'écrire son propre programme console. Dans cet article, nous allons examiner en détail les meilleurs frameworks CLI pour TypeScript, leurs caractéristiques et fournir des exemples pratiques de code.
Pourquoi un framework CLI est-il nécessaire ?
Écrire un CLI « à partir de zéro » ne consiste pas seulement à traiter les arguments de la ligne de commande, mais aussi à gérer les sous-commandes, la validation des entrées, l'affichage en couleur, les invites interactives. Le framework prend en charge la routine, vous permettant de vous concentrer sur la logique métier. TypeScript ajoute un typage strict, ce qui est particulièrement précieux lors du développement d'applications console complexes.
Top 4 des frameworks CLI pour TypeScript
1. Commander.js
Le framework le plus populaire (plus de 30 millions de téléchargements par semaine). Idéal pour créer des CLI complexes à plusieurs niveaux avec des sous-commandes, des options et une génération automatique d'aide.
Installation :
npm install commanderExemple d'application de base :
import { Command } from 'commander';
const program = new Command();
program .name('greet') .description('CLI pour saluer') .version('1.0.0');
program .command('hello') .argument('<name>', 'nom de l\\'utilisateur') .option('-l, --lang <lang>', 'langue de salutation', 'fr') .action((name, options) => { const greetings: Record<string, string> = { fr: 'Bonjour', en: 'Hello', de: 'Hallo' }; const greeting = greetings[options.lang] || greetings.fr; console.log(`${greeting}, ${name}!`); });
program.parse();Exécution :
npx ts-node index.ts hello Jean --lang en# Sortie : Hello, Jean!2. Inquirer.js
Bibliothèque pour créer des invites interactives dans le terminal. Permet de poser des questions, de choisir des options, de saisir des mots de passe et bien plus encore. Se combine parfaitement avec Commander.
Installation :
npm install inquirer @types/inquirerExemple de sondage interactif :
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: 'Comment vous appelez-vous ?', validate: (input: string) => input.length > 0 || 'Le nom ne peut pas être vide' }, { type: 'list', name: 'role', message: 'Quel est votre rôle ?', choices: ['Frontend', 'Backend', 'Fullstack', 'DevOps'] }, { type: 'number', name: 'experience', message: 'Années d\\'expérience ?', default: 1 } ]);
console.log(`✅ ${answers.name}, vous êtes ${answers.role} avec ${answers.experience} ans d\\'expérience.`);}
main();3. Clack
Framework moderne créé par les développeurs d'Astro. Il se distingue par une API minimaliste, de belles animations et une prise en charge de TypeScript « prête à l'emploi ». Idéal pour le prototypage rapide.
Installation :
npm install @clack/promptsExemple avec choix de couleur :
import * as clack from '@clack/prompts';
async function main() { clack.intro('Choix de couleur');
const color = await clack.select({ message: 'Choisissez votre couleur préférée :', options: [ { value: 'red', label: 'Rouge' }, { value: 'green', label: 'Vert' }, { value: 'blue', label: 'Bleu' } ] });
clack.note(`Vous avez choisi : ${color}`); clack.outro('Merci pour votre choix !');}
main();4. Yargs
Analyseur d'arguments puissant
Aussi dans la bibliothèque
Okio pour Kotlin : guide complet avec exemples
Envoi d'email en Rust : bibliothèques lettre et mailparse pour travailler avec le courrier
Migrations de bases de données en Java : aperçu des outils et bibliothèques
Zap / Logrus pour Go : guide complet avec exemples
Client Redis pour TypeScript : ioredis et redis (node-redis)