CLI-Frameworks für TypeScript: Leistungsstarke Konsolenanwendungen erstellen
Moderne Entwicklung mit TypeScript ist ohne die Erstellung von Befehlszeilentools (CLI) undenkbar. Ob Projekt-Bundler, Code-Generator oder Automatisierungsdienstprogramm – jeder Entwickler hat mindestens einmal darüber nachgedacht, ein eigenes Konsolenprogramm zu schreiben. In diesem Artikel werden wir die besten CLI-Frameworks für TypeScript im Detail analysieren, ihre Besonderheiten erläutern und praktische Codebeispiele liefern.
Warum ein CLI-Framework?
Ein CLI „von Grund auf“ zu schreiben, bedeutet nicht nur die Verarbeitung von Befehlszeilenargumenten, sondern auch die Verwaltung von Unterbefehlen, Eingabevalidierung, farbige Ausgabe und interaktive Eingabeaufforderungen. Ein Framework übernimmt die Routinearbeit und ermöglicht es Ihnen, sich auf die Geschäftslogik zu konzentrieren. TypeScript fügt strenge Typisierung hinzu, was besonders bei der Entwicklung komplexer Konsolenanwendungen wertvoll ist.
Die Top 4 CLI-Frameworks für TypeScript
1. Commander.js
Das beliebteste Framework (über 30 Millionen Downloads pro Woche). Ideal für die Erstellung komplexer, mehrstufiger CLIs mit Unterbefehlen, Optionen und automatischer Hilfegenerierung.
Installation:
npm install commanderBeispiel einer Basis-Anwendung:
import { Command } from 'commander';
const program = new Command();
program .name('greet') .description('CLI zum Begrüßen') .version('1.0.0');
program .command('hello') .argument('<name>', 'Benutzername') .option('-l, --lang <lang>', 'Begrüßungssprache', 'ru') .action((name, options) => { const greetings: Record<string, string> = { ru: 'Привет', en: 'Hello', de: 'Hallo' }; const greeting = greetings[options.lang] || greetings.ru; console.log(`${greeting}, ${name}!`); });
program.parse();Ausführung:
npx ts-node index.ts hello Ivan --lang en# Ausgabe: Hello, Ivan!2. Inquirer.js
Bibliothek zur Erstellung interaktiver Eingabeaufforderungen im Terminal. Ermöglicht das Stellen von Fragen, die Auswahl von Optionen, die Eingabe von Passwörtern und vieles mehr. Lässt sich hervorragend mit Commander kombinieren.
Installation:
npm install inquirer @types/inquirerBeispiel einer interaktiven Befragung:
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: 'Wie heißen Sie?', validate: (input: string) => input.length > 0 || 'Name darf nicht leer sein' }, { type: 'list', name: 'role', message: 'Ihre Rolle?', choices: ['Frontend', 'Backend', 'Fullstack', 'DevOps'] }, { type: 'number', name: 'experience', message: 'Jahre Erfahrung?', default: 1 } ]);
console.log(`✅ ${answers.name}, Sie sind ${answers.role} mit ${answers.experience} Jahren Erfahrung.`);}
main();3. Clack
Modernes Framework von den Erstellern von Astro. Zeichnet sich durch eine minimalistische API, schöne Animationen und integrierte TypeScript-Unterstützung aus. Ideal für schnelles Prototyping.
Installation:
npm install @clack/promptsBeispiel mit Farbauswahl:
import * as clack from '@clack/prompts';
async function main() { clack.intro('Farbauswahl');
const color = await clack.select({ message: 'Wählen Sie Ihre Lieblingsfarbe:', options: [ { value: 'red', label: 'Rot' }, { value: 'green', label: 'Grün' }, { value: 'blue', label: 'Blau' } ] });
clack.note(`Sie haben gewählt: ${color}`); clack.outro('Vielen Dank für Ihre Wahl!');}
main();4. Yargs
Leistungsstarker Argument-Parser
Auch in der Bibliothek
ndarray für Rust: Vollständige Anleitung mit Beispielen
NodaTime für C# (.NET): Vollständiges Tutorial mit Beispielen
Aufgabenwarteschlangen in C# (.NET): System.Threading.Channels, Hangfire und RabbitMQ
JWT-Tokens in Rust: Bibliotheken und Implementierung der Authentifizierung
HTTP-Client für JavaScript (Node.js): Top-Bibliotheken für die Arbeit mit APIs