Node.js-Module: Commander

Commander – Unterstützung für die Kommandozeile
Kommentare

Mit Node.js lassen sich neben ganz gewöhnlichen Webapplikationen auch sehr gut Werkzeuge für die Kommandozeile erstellen. Es kann jedoch sehr mühsam werden, wenn Sie Kommandozeilenoptionen per Hand parsen müssen. Diese und noch weitere Aufgaben erledigt darum ein Modul namens Commander für Sie.

Das Commander-Modul können Sie über den npm in Ihrem Projekt installieren, indem Sie auf der Kommandozeile Ihres Systems im Verzeichnis Ihrer Applikation den Befehl npm install –save commander ausführen. Nach der Installation können Sie Commander direkt in Ihrem Projekt verwenden. Wie das funktioniert, sehen Sie in Listing 1.

Mit der option-Methode von Commander können Sie die Kommandozeilenoptionen, die der Applikation übergeben wurden, parsen. Die parse-Methode akzeptiert eine Referenz auf die Kommandozeile, mit der das aktuelle Skript aufgerufen wurde in Form des process.argv-Objekts. Im Beispiel können Sie dann über die Variable program.euro auf den übergebenen Wert zugreifen. Speichern Sie den Quellcode aus Listing 1 in einer Datei mit dem Namen index.js, können Sie ihn mit dem Befehl node index.js -e 1 ausführen.

var program = require('commander');

program
    .option('-e, --euro [coll]', 'Amount of dollars to convert', parseInt, 4)
    .parse(process.argv);

console.log(`Dollar: ${program.euro} Euro: ${program.euro * 0.918484501}`);

Parsen von Optionen

Optionen für Kommandozeilenwerkzeuge können entweder über die Kurzschreibweise mit einem vorangestellten Bindestrich gefolgt von einem Buchstaben oder in der langen Version mit zwei Bindestrichen und einem ganzen Wort geschrieben werden. Ohne weitere Hilfsmittel müssen Sie das process.argv-Objekt selbst parsen, was vor allem bei mehreren möglichen Optionen schnell unübersichtlich werden kann.

Wie Sie schon im vorangegangenen Beispiel sehen konnten, können Sie über die option-Methode definieren, welche Optionen Ihre Applikation unterstützen soll. Die option-Methode kann jedoch noch viel mehr leisten. Im ersten Argument definieren Sie die Form und den Namen der Optionen; das zweite Argument ist ein Hinweistext, wie die Option zu verwenden ist. Als drittes Argument können Sie der option-Methode eine Callback-Funktion übergeben, die mit dem Optionswert ausgeführt wird. Statt einer Funktion können Sie hier auch einen regulären Ausdruck angeben, der als Filter angewendet wird. Das letzte Argument ist schließlich ein Standardwert, der benutzt wird, wenn kein Wert übergeben wird.

Go for PHP Developers

mit Terrence Ryan (google)

Everything you need to know about PHP 7.2

mit Sebastian Bergmann (thePHP.cc)

Hilfetext

Wenn Sie ein Kommandozeilenwerkzeug erstellen, gehört es zum guten Stil, auch eine Hilfefunktion anzubieten, die über die Option -h oder –help erreichbar ist. Diese Aufgabe nimmt Ihnen Commander ebenfalls ab und generiert aus den Hinweistexten, die Sie für die einzelnen Optionen hinterlegt haben, eine Hilfe. Mit der usage-Methode von Commander können Sie den Hilfetext noch zusätzlich erweitern.

Subkommandos

Subkommandos kennen Sie auf der Kommandozeile von Werkzeugen wie npm oder Git. Commander unterstützt Sie bei der Umsetzung solcher Subkommandos, sodass Sie auch sehr umfangreiche Applikationen implementieren können. In die Applikation werden die Subkommandos ähnlich einfach integriert wie schon die Optionen. Sie müssen lediglich eine Kombination aus command– und action-Methode einsetzen. Optional können Sie dem Subkommando zusätzliche Werte übergeben, auf die Sie in der Callback-Funktion, die Sie in der action-Methode definieren, Zugriff haben. Wie das genau funktioniert, sehen Sie in Listing 2.

var program = require('commander');
program
    .command('setup [subsystem]')
    .description('Setup a subsystem')
    .action(function(subsystem) {
        console.log('Setting up: ', subsystem);
    });
program.parse(process.argv);

Zusammenfassung

Wenn es um die Implementierung von Kommandozeilenwerkzeugen in Node.js geht, führt fast kein Weg am Commander-Paket vorbei. Es unterstützt Sie beim Parsen von Optionen, der Erstellung von Hilfetexten und vielen anderen kleinen und großen Aufgabenstellungen, mit denen Sie konfrontiert werden. Die hier gezeigten Features sind nur ein kleiner Ausschnitt aus dem umfangreichen Feature-Set von Commander.

Die gesamte Dokumentation und zahlreiche praktische Beispiele finden Sie auf der GitHub-Seite des Projekts. Ein weiteres Paket, das Commander sehr gut ergänzt, ist colors.js, mit dem Sie sehr komfortabel verschiedenste Styles wie Text- und Hintergrundfarbe, Unter- oder Durchstreichen auf Ihre Konsole anwenden können. Dieses Projekt finden Sie ebenfalls auf GitHub.

PHP Magazin

Entwickler MagazinDieser Artikel ist im PHP Magazin erschienen. Das PHP Magazin deckt ein breites Spektrum an Themen ab, die für die erfolgreiche Webentwicklung unerlässlich sind.

Natürlich können Sie das PHP Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -