Erfahren Sie, wie Sie mithilfe dieser hilfreichen Bibliothek ein Programm mit einer Standard-Befehlszeilenschnittstelle erstellen.
CLI-Anwendungen (Command Line Interface) sind einfache textbasierte Apps, die im Terminal ausgeführt werden, um bestimmte Aufgaben auszuführen. CLI-Anwendungen spielen eine entscheidende Rolle im Arbeitsablauf fast aller Entwickler und IT-Experten.
Dabei handelt es sich meist um Hilfsprogramme, die mit dem Betriebssystem oder Anwendungen interagieren, die beides sind lokal installiert oder über das Internet verfügbar, um eine Aufgabe gemäß den Eingaben des Benutzers auszuführen und Richtlinien.
CLI-Anwendungen verstehen
Über eine Befehlszeilenschnittstelle können Sie mit einem Programm interagieren, indem Sie Textzeilen eingeben. Viele CLI-Programme werden unterschiedlich ausgeführt, je nachdem, mit welchem Befehl Sie sie starten.
Zum Beispiel, Das ls-Programm zeigt Dateiinformationen an und den Inhalt von Verzeichnissen. Sie könnten es so ausführen:
ls -l /home
Dieser Befehl beinhaltet:
- Der Name des Programms: ls.
- Eine Option (oder Flagge). In diesem Fall, -l ist eine Abkürzung für „long“ und liefert detailliertere Informationen.
- Ein Argument, /home. Hier gibt das Argument einen Pfad zum Verzeichnis an, für das Informationen angezeigt werden sollen.
Während jedes Programm seine eigene Befehlszeilenschnittstelle definieren kann, sind bestimmte Elemente üblich und werden häufig verwendet. Sie sollten diese Standards befolgen, damit jemand, der mit einer Befehlszeilenschnittstelle vertraut ist, Ihre Programme problemlos verwenden kann.
Was ist Commander.js?
Commander.js ist ein Paket, mit dem Sie CLI-Apps in Node.js erstellen können. Es verfügt über eine umfangreiche Funktionsbibliothek, mit der Sie eine Standard-CLI-Anwendung erstellen und einen Großteil der schweren Arbeit erledigen können. Sie müssen lediglich Befehle, Optionen und Funktionen für Ihre CLI-App definieren.
Durch die Kombination mit anderen Paketen wie Chalk.js zur Gestaltung können Sie schnell eine voll funktionsfähige CLI-App in Node.js erstellen.
Erstellen einer CLI-Anwendung in Node.js mit Commander.js
Betrachten Sie eine Beispiel-CLI-App. urbanary-cli, Hier werden die Bedeutung von Wörtern und Abkürzungen in den sozialen Medien nachgeschlagen das Urban Dictionary. Sie erfahren, wie Sie die CLI erstellen und im veröffentlichen npm Paketregistrierung, damit andere es installieren können.
Erstellen Sie einen neuen Ordner und initialisieren Sie ein neues Node.js-Projekt mit den folgenden Befehlen:
mkdir urbanary-cli
cd urbanary-cli
npm init -y
Diese CLI wird verwendet Axios zum Senden von HTTP-Anfragen zur Urban Dictionary API. Sie können verwenden Schnelle API um Endpunkte zu überprüfen und Anmeldeinformationen anzuzeigen.
Eine einfache CLI mit einem Unterbefehl und Hilfe
Um mit dem Aufbau Ihrer CLI zu beginnen, installieren Sie Commander und Axios mit dem folgenden Befehl:
npm install commander axios
Einen neuen Ordner erstellen, Behälter, in Ihrem Projektverzeichnis und eine neue leere Datei, index.js:
mkdir bin
cd bin
touch index.js
Der Behälter (kurz für „binär“) ist wichtig, da er die Einstiegspunktdatei enthält, die Node aufruft, wenn Sie Ihre CLI ausführen. Der index.js file ist diese Einstiegspunktdatei. Bearbeiten Sie nun die Datei index.js und beginnen Sie mit der Erstellung Ihrer CLI mit der Commander.js-API.
Importieren Sie zunächst die Programm Objekt von Commander:
const { program } = require('commander');
Sie werden das verwenden Programm Objekt, um die Schnittstelle Ihres Programms zu definieren, einschließlich Unterbefehlen, Optionen und Argumenten. Das Objekt verfügt für jede dieser Methoden über entsprechende Methoden. Um beispielsweise einen Unterbefehl zu definieren, verwenden Sie den Befehl Methode.
Definieren Sie a finden Unterbefehl für die CLI, um nach Wörtern im Urban Dictionary zu suchen und mithilfe des folgenden Codes eine Beschreibung hinzuzufügen:
// index.js
program
.command('find ' )
.description('find meaning of a word or abbreviation or slang')
Dies registriert a finden Befehl, der ein Wort danach und eine Beschreibung dafür erwartet. Die Verwendung von spitzen Klammern bedeutet, dass das Wort ein erforderliches Argument ist; Verwenden Sie stattdessen eckige Klammern ([]), um es optional zu machen.
Sie sollten eine Beschreibung hinzufügen, da Commander.js diese zum Generieren von Hilfetext verwendet. Wenn Sie die Anwendung mit dem ausführen helfen Wenn Sie den Befehl ausführen, erhalten Sie eine Standard-Bedienungsanleitung.
Um dies zu testen, fügen Sie Folgendes hinzu:
program.parse()
Führen Sie dann das Programm aus und übergeben Sie es helfen Befehl, um die folgende Ausgabe zu erhalten:
Auf diese Weise zeigt jede Standard-CLI-Anwendung den Benutzern ihre Hilfe an, und mit Commander müssen Sie sich nicht darum kümmern, sie selbst zu erstellen. Der -H Und --helfen Optionen sind nützlich, um die Bedienungsanleitung für einen Befehl zu überprüfen.
Definieren von Optionen und Vorbereiten des endgültigen Programms
Sie definieren eine Option auch durch Verketten Möglichkeit -Methode zur Befehlsdefinition hinzufügen.
So definieren Sie eine Option, um Beispiele in die Wortdefinitionen aufzunehmen:
program.option('-e, --example', "Display examples")
Und so definieren Sie eine Option, die die Anzahl der zurückzugebenden Definitionen angibt:
program.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
Der Möglichkeit Die Methode akzeptiert zwei Zeichenfolgenparameter, einen für den Namen der Option (sowohl Kurz- als auch Langform) und den anderen für ihre Beschreibung. Das Extra [Menge] Argument in der zählen Option ist der Wert für die Anzahl der anzuzeigenden Definitionen.
Die letzte hinzuzufügende Methode ist nun die Aktion Methode. Sie werden das umsetzen finden Die Funktionalität des Befehls innerhalb dieser Methode. Fügen Sie es der Kette hinzu, sodass Ihr Code nun wie folgt aussieht:
program
.command('find ' )
.description('find meaning of a word or abbreviation or slang')
.option('-e, --example', "Display examples")
.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
.action(async (word, options) => {});
Mit diesem Setup erhalten Sie hier drei Definitionen für einen Befehl Lol mit Beispielen sieht so aus:
urbanary-cli find lol -e -c 3
Oder verwenden Sie die Langform jeder Option:
urbanary-cli find lol --example --count 3
Kasse NPM-Seite des Kommandanten um mehr darüber zu erfahren und wie Sie seine Funktionen an Ihre verschiedenen Anwendungsfälle anpassen können.
Implementierung der Funktionalität des Programms
Importieren Sie zunächst Axios in Ihr index.js Datei wie folgt:
const axios = require('axios');
Dann im Funktionskörper von AktionMit dem Parameter von können Sie die Logik implementieren, um Anfragen an Urban Dictionary zu stellen und Ergebnisse entsprechend Ihren Optionen anzuzeigen.
Beginnen Sie mit der Definition Ihrer Anfrage:
let requestOptions = {
method: 'GET',
URL: "https://mashape-community-urban-dictionary.p.rapidapi.com/define",
params: { term: word },
headers: {
'X-RapidAPI-Key': YOUR_RAPID_API_KEY,
'X-RapidAPI-Host': 'mashape-community-urban-dictionary.p.rapidapi.com'
}
}
Stellen Sie dann mit Axios die Anfrage an die API mit dem folgenden Code:
try {
let resp = await axios.request(requestOptions);
console.log(`Definitions for ${word} fetched`);
wordData = resp.data.list;
} catch (err) {
console.error(err.message)
}
Die einzige Eigenschaft, die Sie aus den Antwortdaten benötigen, ist die Liste Eigenschaft, die Definitionen und Beispiele enthält.
Immer noch in der versuchen Fügen Sie im Block diese Logik hinzu, um Optionen zu verarbeiten und die Ergebnisse wie folgt anzuzeigen:
if (options.example && options.count) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
console.log(`Example:\n${elem.example}\n`);
});
} elseif (options.count && !options.example) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);
definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
});
} elseif (options.example) {
console.log(`Definition: ${wordData[0].definition}`);
console.log(`Example:\n${wordData[0].example}`);
} else {
console.log(`Definition: ${wordData[0].definition}`);
}
Dieser Code wertet die Befehlsargumente mithilfe von if-else-Anweisungen aus, um zu bestimmen, wie die Ausgabe angezeigt werden soll. Wenn die Beispiel Und zählen Wenn Optionen übergeben werden, wird eine Iteration durchgeführt Wortdaten und gibt die angegebene Anzahl an Definitionen und Beispielen mit aus.
Wenn Sie nur bestehen zählen, zeigt es diese Menge an Definitionen ohne Beispiele an. Wenn Sie nur bestehen Beispiel, wird eine Definition mit einem Beispielsatz angezeigt. Der anders Die Anweisung ist das Standardverhalten, bei dem nur die Definition gedruckt wird, wenn Sie keine Optionen übergeben.
Die Anwendung ist nun fertig, daher besteht der nächste Schritt darin, sie ausführbar zu machen. Beginnen Sie mit dem Hinzufügen eine Shebang-Linie an den Anfang Ihrer bin/index.js-Datei, damit Sie sie als eigenständiges Skript ausführen können:
#!/usr/bin/env node
Als nächstes öffnen Sie Ihr package.json Bearbeiten Sie den Wert der Datei hauptsächlich Eigenschaft, und fügen Sie a hinzu Behälter Eigenschaft danach wie folgt:
"main": "./bin/index.js",
"bin": {
"urbanary-cli": "./bin/index.js"
},
Der Schlüssel urbanary-cli, unter Behälter ist der Befehl, den Sie in Ihr Terminal eingeben, um Ihre Anwendung auszuführen. Achten Sie daher beim Erstellen Ihrer Befehlszeilenanwendungen darauf, dort einen passenden Namen zu verwenden.
Laufen npm install -g um die Anwendung global zu installieren, und Sie können die Anwendung als Befehl von Ihrem Terminal aus ausführen.
Das Bild unten zeigt den Installationsprozess und einen Testbefehl, um die Bedeutung herauszufinden lmk:
Sie können es auch durch Ausführen in der npm-Paketregistrierung veröffentlichen npm veröffentlichen im Terminal im Projektverzeichnis. Dadurch kann es von jedem von überall aus installiert werden npm installieren.
Es ist einfacher, Ihre Anwendung mit Node.js zu erstellen und zu veröffentlichen, als wenn Sie es tun Erstellen Sie CLIs mit Technologien wie Rust.
Erstellen Sie funktionale CLI-Anwendungen mit Node.js
Egal, ob Sie an einem npm-Paket arbeiten und ein dazugehöriges CLI-Dienstprogramm benötigen oder einfach nur ein Tool erstellen möchten, um Ihren Arbeitsablauf als Entwickler zu verbessern. Mit dem Node.js Commander-Paket haben Sie alles, was Sie brauchen, um Ihre Idee zum Leben zu erwecken.
Sie können auch noch einen Schritt weiter gehen, indem Sie andere Bibliotheken verwenden, um verbesserte CLI-Erlebnisse für Ihre Anwendungen zu erstellen. Node.js ist robust genug, um Ihre Zwecke ohne großen Aufwand zu erfüllen.