Création d'applications CLI en Node.js : frameworks Commander et Yargs

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 commander


Exemple 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 yargs


Exemple 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

Recommendations