Frameworks CLI pour JavaScript (Node.js) : Création d'applications console puissantes
Le développement d'interfaces en ligne de commande (CLI) est l'une des tâches clés dans l'écosystème Node.js. Des scripts simples aux outils complexes pour DevOps, les applications CLI nous entourent partout. Cependant, écrire un analyseur d'arguments, gérer les sous-commandes et afficher l'aide manuellement est un travail fastidieux et sujet aux erreurs. C'est là que les frameworks CLI pour JavaScript (Node.js) viennent à la rescousse, en prenant en charge toute la routine.
Dans cet article, nous allons détailler les deux frameworks les plus populaires : Commander.js et Yargs. Vous apprendrez à créer rapidement des applications CLI professionnelles avec prise en charge des arguments, des options, de la sortie colorée et de la génération automatique d'aide.
Commander.js — classique et simplicité
Commander.js est le framework le plus connu et le plus utilisé pour créer des CLI sur Node.js. Il est utilisé dans des projets tels que Vue CLI, Angular CLI et bien d'autres. Son principal avantage est une API intuitivement compréhensible, basée sur des chaînes d'appels.
Installation
npm install commanderExemple de base
const { Command } = require('commander');const program = new Command();
program .name('greet') .description('CLI pour saluer') .version('1.0.0');
program .command('hello') .description('Saluer l'utilisateur') .argument('<name>', 'Nom de l'utilisateur') .option('-l, --language <lang>', 'Langue du salut', 'russe') .action((name, options) => { if (options.language === 'anglais') { console.log(`Hello, ${name}!`); } else { console.log(`Привет, ${name}!`); } });
program.parse(process.argv);Dans cet exemple, nous avons créé la commande greet hello, qui prend un argument obligatoire name et une option facultative --language. Commander générera automatiquement l'aide pour la commande --help.
Prise en charge des sous-commandes
Commander gère très bien la hiérarchie des commandes. Vous pouvez créer des commandes imbriquées, ce qui est particulièrement utile pour les outils complexes :
const project = program.command('project');
project .command('init') .description('Initialiser le projet') .action(() => { console.log('Projet initialisé'); });
project .command('build') .description('Compiler le projet') .option('-p, --production', 'Compilation de production') .action((options) => { console.log(options.production ? 'Compilation de production' : 'Compilation standard'); });Yargs — flexibilité et puissance
Yargs est un autre framework puissant qui se concentre sur l'analyse des arguments et offre des capacités très flexibles. Il est particulièrement adapté lorsque vous avez besoin d'un contrôle précis sur le comportement de l'analyseur, ou lorsque vous construisez des interfaces complexes à plusieurs niveaux.
Installation
npm install yargsExemple avec Yargs
const yargs = require('yargs/yargs');const { hideBin } = require('yargs/helpers');
const argv = yargs(hideBin(process.argv)) .command('serve [port]', 'Démarrer le serveur', (yargs) => { yargs .positional('port', { describe: 'Port pour le serveur', default: 3000 }); }, (argv) => { console.log(`Serveur démarré sur le port ${argv.port}`); }) .option('verbose', { alias: 'v', type: 'boolean', description: 'Sortie détaillée' }) .example('$0 serve 8080', 'Démarrer le serveur sur le port 8080') .demandCommand(1, 'Une commande doit être spécifiée') .help() .argv;Yargs propose une approche plus déterministe pour définir les commandes. Vous pouvez spécifier précisément quels arguments sont positionnels, leur attribuer des valeurs par défaut, vérifier les types et bien plus encore.
Validation et types
L'un des points forts