CLI-Frameworks für TypeScript: Leistungsstarke Konsolenanwendungen erstellen
Die Entwicklung von Kommandozeilenschnittstellen (CLI) in TypeScript ist mehr als nur das Schreiben eines Argument-Parsers. Moderne CLI-Anwendungen können interaktiv, farbig sein, Autovervollständigung unterstützen und sogar animierte Grafiken anzeigen. Dafür gibt es spezialisierte Frameworks und Bibliotheken. In diesem Artikel analysieren wir vier wichtige Tools zur Erstellung von CLI in TypeScript: Commander.js, Ink, Oclif und Yargs. Sie erfahren deren Stärken, erhalten fertige Codebeispiele und verstehen, welches Tool für Ihre Aufgabe geeignet ist.
1. Commander.js — Klassiker und Einfachheit
Commander.js ist das beliebteste Framework zur Erstellung von CLI in Node.js und TypeScript. Es bietet eine deklarative API zur Beschreibung von Befehlen, Argumenten und Optionen. Dank der integrierten TypeScript-Unterstützung erhalten Sie Autovervollständigung und Typprüfung.
Hauptfunktionen:
- Automatische Generierung der Hilfe (
--help). - Unterstützung für verschachtelte Befehle (Unterbefehle).
- Validierung erforderlicher Argumente.
- Flexibles Optionssystem: boolesch, Zeichenfolgen, mit Standardwerten.
Beispiel einer einfachen CLI mit Commander.js + TypeScript:
import { Command } from 'commander';
const program = new Command();
program .name('greet') .description('CLI zur Begrüßung') .version('1.0.0');
program .command('hello') .argument('<name>', 'Benutzername') .option('-l, --lang <language>', 'Begrüßungssprache', 'de') .action((name, options) => { if (options.lang === 'en') { console.log(`Hello, ${name}!`); } else { console.log(`Hallo, ${name}!`); } });
program.parse(process.argv);Commander.js ist ideal für einfache Dienstprogramme und Automatisierungsskripte. Es ist nicht mit unnötigen Abhängigkeiten überladen und gut dokumentiert.
2. Ink — Reaktive CLI mit Komponenten
Ink ist ein einzigartiges Framework, mit dem Sie CLI-Schnittstellen mit React-ähnlichen Komponenten erstellen können. Sie schreiben in JSX, und Ink rendert dies im Terminal. In Kombination mit TypeScript erhalten Sie eine strenge Typisierung der Komponenten.
Wesentliche Merkmale:
- Komponentenansatz:
<Text>,<Box>,<Spacer>. - Automatische Aktualisierung bei Zustandsänderungen (Reaktivität).
- Unterstützung für Animationen, Ladeindikatoren, Fortschrittsbalken.
- Tiefe Integration mit React-Hooks (
useInput,useApp).
Beispiel einer interaktiven CLI mit Ink:
import React, { useState } from 'react';import { render, Text, Box, useInput } from 'ink';
const Counter = () => { const [count, setCount] = useState(0);
useInput((input) => { if (input === '+') setCount(prev => prev + 1); if (input === '-') setCount(prev => prev - 1); });
return ( <Box> <Text>Zähler: {count}. Drücken Sie '+' oder '-'</Text> </Box> );};
render(<Counter />);Ink eignet sich für komplexe interaktive Dienstprogramme, Installationsassistenten und Dashboards im Terminal. Es ist die beste Wahl, wenn Sie eine schöne und reaktionsschnelle Benutzeroberfläche benötigen.
3. Oclif — Framework für skalierbare CLI
Oclif (Open CLI Framework) von Heroku ist ein vollwertiges Framework zur Erstellung von CLI-Anwendungen jeder Komplexität. Es unterstützt Plugins, automatische Updates, Hooks und die Projekterzeugung.
Stärken:
- Integrierter Code-Generator (
oclif generate). - TypeScript-Unterstützung von Haus aus.
- Plugin-System zur Erweiterung der Funktionalität.
- Automatische CLI-Updates über npm.
Bei
Auch in der Bibliothek
Ktor Client für Kotlin: Komplettguide mit Beispielen
Arbeiten mit YAML in C++: Die Bibliothek yaml-cpp für Parsing und Serialisierung
Swagger/OpenAPI-Generierung für PHP: Die besten Tools und Bibliotheken
Standard-Java-Bibliothek: Vollständiger Überblick für Anfänger und Profis