Erstellung von CLI-Anwendungen mit Node.js: Frameworks Commander und Yargs

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

CLI-Frameworks für JavaScript (Node.js): Erstellung leistungsstarker Konsolenanwendungen



Die Entwicklung von Kommandozeilenschnittstellen (CLI) ist eine der Kernaufgaben im Node.js-Ökosystem. Von einfachen Skripten bis hin zu komplexen DevOps-Tools – CLI-Anwendungen umgeben uns überall. Allerdings ist das manuelle Schreiben eines Argument-Parsers, die Behandlung von Unterbefehlen und die Ausgabe von Hilfetexten eine mühsame und fehleranfällige Arbeit. Genau hier kommen CLI-Frameworks für JavaScript (Node.js) ins Spiel, die die gesamte Routinearbeit übernehmen.



In diesem Artikel werden wir die beiden beliebtesten Frameworks im Detail analysieren: Commander.js und Yargs. Sie erfahren, wie Sie schnell professionelle CLI-Anwendungen mit Unterstützung für Argumente, Optionen, farbige Ausgabe und automatischer Hilfegenerierung erstellen können.



Commander.js – Klassiker und Einfachheit



Commander.js ist das bekannteste und am weitesten verbreitete Framework zur Erstellung von CLIs in Node.js. Es wird in Projekten wie Vue CLI, Angular CLI und vielen anderen verwendet. Sein Hauptvorteil ist die intuitive API, die auf Methodenverkettung basiert.



Installation

npm install commander


Basisbeispiel

const { Command } = require('commander');const program = new Command();

program .name('greet') .description('CLI zur Begrüßung') .version('1.0.0');

program .command('hello') .description('Benutzer begrüßen') .argument('<name>', 'Name des Benutzers') .option('-l, --language <lang>', 'Sprache der Begrüßung', 'Russisch') .action((name, options) => { if (options.language === 'Englisch') { console.log(`Hello, ${name}!`); } else { console.log(`Привет, ${name}!`); } });

program.parse(process.argv);


In diesem Beispiel haben wir den Befehl greet hello erstellt, der ein erforderliches Argument name und eine optionale Option --language akzeptiert. Commander generiert automatisch die Hilfe für den Befehl --help.



Unterstützung von Unterbefehlen

Commander bewältigt die Hierarchie von Befehlen hervorragend. Sie können verschachtelte Befehle erstellen, was besonders nützlich für komplexe Werkzeuge ist:

const project = program.command('project');

project .command('init') .description('Projekt initialisieren') .action(() => { console.log('Projekt initialisiert'); });

project .command('build') .description('Projekt bauen') .option('-p, --production', 'Produktions-Build') .action((options) => { console.log(options.production ? 'Produktions-Build' : 'Normaler Build'); });


Yargs – Flexibilität und Leistungsfähigkeit



Yargs ist ein weiteres leistungsstarkes Framework, das sich auf das Parsen von Argumenten konzentriert und sehr flexible Möglichkeiten bietet. Es ist besonders gut geeignet, wenn Sie eine präzise Kontrolle über das Verhalten des Parsers benötigen oder komplexe mehrstufige Schnittstellen erstellen.



Installation

npm install yargs


Beispiel mit Yargs

const yargs = require('yargs/yargs');const { hideBin } = require('yargs/helpers');

const argv = yargs(hideBin(process.argv)) .command('serve [port]', 'Server starten', (yargs) => { yargs .positional('port', { describe: 'Port für den Server', default: 3000 }); }, (argv) => { console.log(`Server gestartet auf Port ${argv.port}`); }) .option('verbose', { alias: 'v', type: 'boolean', description: 'Ausführliche Ausgabe' }) .example('$0 serve 8080', 'Server auf Port 8080 starten') .demandCommand(1, 'Ein Befehl muss angegeben werden') .help() .argv;


Yargs bietet einen deterministischeren Ansatz zur Definition von Befehlen. Sie können genau angeben, welche Argumente positional sind, Standardwerte für sie festlegen, Typen überprüfen und vieles mehr.



Validierung und Typen

Eine der Stärken

Empfehlungen