Npm erstellt ein CLI-Befehlszeilentool
Dieses Mal bringe ich Ihnen Npm zur Verwendung des CLI-Befehlszeilentools. Was sind die Vorsichtsmaßnahmen für die Verwendung von Npm, um das CLI-Befehlszeilentool zu verwenden?
Vorwort
Wenn Sie ein NPM-Plug-In schreiben möchten, wenn Sie Ihre Operationen über die Befehlszeile vereinfachen möchten und auch ein fauler Mensch sind, dann ist dieser Artikel eine Lektüre wert.
Der vorherige Artikel des PO-Eigentümers hat die Anpassung einer eigenen Vorlage vorgestellt, aber der PO-Eigentümer ist damit immer noch nicht zufrieden. Im Projekt müssen wir häufig neue Seiten, logische Stile und andere Dateien erstellen Es ist sehr mühsam, einen neuen zu erstellen und dann einige grundlegende Codes zu kopieren. Daher wurde dieser Artikel geschrieben. Lassen Sie uns als Nächstes vom Po-Master Schritt für Schritt demonstrieren, wie ein NPM-Befehlszeilen-Plug-In erstellt wird.
Npm-Konto registrieren
Um ein NPM-Plug-In zu veröffentlichen, müssen Sie zunächst über ein NPM-Konto verfügen. Der Prozess wird nicht langwierig sein.
Offizielle NPM-Website
Nachdem Sie ein Konto haben, generieren wir über npm init eine PaketKonfigurationsdatei, geben einige Ihrer Informationen ein und dann können Sie mit dem Schreiben von Logikcode beginnen.
Befehlseintrag schreiben
Schauen Sie sich zunächst die Projektstruktur an
. ├── bin //命令配置 ├── README.md //说明文档 ├── index.js //主入口 ├── src //功能文件 ├── package.json //包信息 └── test //测试用例
Die Beispielbefehlscodes werden alle in das bin-Verzeichnis geschrieben. Wir aktivieren nun den Befehl in der Konfigurationsdateipaketdatei und fügen ein Konfigurationselement bin
"bin": { "xu": "./bin/xu.js" },
hinzu Installieren Sie dann eine Abhängigkeit, das von TJ geschriebene Commander-Plug-in,
npm i commander --save
Mit diesem Tool können wir ganz einfach Befehlscodes schreiben
xu.js
#!/usr/bin/env node process.title = 'xu'; require('commander') .version(require('../package').version) .usage('<command> [options]') .command('generate', 'generate file from a template (short-cut alias: "g")') .parse(process.argv) require('./xu-generate'); >>引入
Diese Datei kann als Eintragsdatei betrachtet werden. Der Grund, warum das Skript mit env gestartet werden muss, liegt darin, dass der Skriptinterpreter in verschiedenen Verzeichnissen in Linux installiert werden kann in Suche im PATH-Verzeichnis des Systems. Gleichzeitig spezifiziert env auch einige Systemumgebungsvariablen . Diese Schreibweise dient hauptsächlich dazu, Ihr Programm auf verschiedenen Systemen anwendbar zu machen.
In diesem Schritt können Sie einfach Ihr eigenes NPM-Plugin testen
$ node ./bin/xu.js >>> 输出一些插件usage。help信息
Was den Commander betrifft, können Sie zunächst auf Github des Autors nachlesen. Die Parameter werden hier nicht erläutert.
xu-generate.js
#!/usr/bin/env node const program = require('commander'); const chalk = require('chalk') const xu = require('../src/generate'); /** * Usage. */ program .command('generate') .description('quick generate your file') .alias('g') .action(function(type, name){ xu.run(type, name); }); program.parse(process.argv);
Dies ist der Funktionsbefehl, der einen Generierungsbefehl definiert. .alias('g') ist die Abkürzung des Befehls und dann .action(function(type, name){xu.run(type, name); }); Gibt eine Funktion zurück. Diese Funktion müssen wir tun, um diesen Befehl zu definieren.
Funktionsfunktion schreiben
./src/generate.js
Diese Datei definiert, wann wir
$ xu g
eingeben Die Operation wurde durchgeführt.
/** * Created by xushaoping on 17/10/11. */ const fs = require('fs-extra') const chalk = require('chalk') exports.run = function(type, name) { switch (type) { case 'page': const pageFile = './src/page/' + name + '/' + name + '.vue' const styleFile = './src/page/' + name + '/' + name + '.less' fs.pathExists(pageFile, (err, exists) => { if (exists) { console.log('this file has created') } else { fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/page.vue', pageFile, err => { if (err) return console.error(err) console.log(pageFile + ' has created') }) fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/page.less', styleFile, err => { if (err) return console.error(err) console.log(styleFile + ' has created') }) } }) break; case 'component': const componentFile = './src/components/' + name + '.vue' fs.pathExists(componentFile, (err, exists) => { if (exists) { console.log('this file has created') } else { fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/component.vue', componentFile, err => { if (err) return console.error(err) console.log(componentFile + ' has created') }) } }) break; case 'store': const storeFile = './src/store/modules' + name + '.js' fs.pathExists(storeFile, (err, exists) => { if (exists) { console.log('this file has created') } else { fs.copy('/usr/local/lib/node_modules/vue-xu-generate/src/template/store.js', storeFile, err => { if (err) return console.error(err) console.log(storeFile + ' has created') }) } }) break; default: console.log(chalk.red(`ERROR: uncaught type , you should input like $ xu g page demo` )) console.log() console.log(' Examples:') console.log() console.log(chalk.gray(' # create a new page')) console.log(' $ xu g page product') console.log() console.log(chalk.gray(' # create a new component')) console.log(' $ xu g component product') console.log() console.log(chalk.gray(' # create a new store')) console.log(' $ xu g store product') console.log() break; } };
Hier gibt es zwei neue Abhängigkeiten, nämlich die Befehlsausgabefarbe und ein Dateioperations-Plug-in, das über npm installiert wird.
$ npm i fs-extra --save $ npm i chalk --save
Diese js-Datei exportiert eine von xu-generate.js aufzurufende Ausführungsfunktion. Wir erhalten den vom Benutzer eingegebenen Typ und Namen über Parameter und können dann basierend auf dem Typ über das Knoten-FS-Modul arbeiten (hier wird eine Abhängigkeit verwendet). , aber das Prinzip ist immer noch fs) Kopieren Sie die Vorlagendatei in Ihr Projekt.
Zu diesem Zeitpunkt haben wir die Entwicklung eines Befehls abgeschlossen, mit dem die Vorlagendatei des Projekts schnell generiert werden kann.
Lokale Tests
Die Entwicklung von NPM-Paketen ähnelt nicht der Webentwicklung. Sie können sie direkt im Browser anzeigen, eine Testdatei im Instanzverzeichnis erstellen und dann den Knoten testen Nur um unsere Logik zu testen. Wenn nach der Veröffentlichung einige Funktionen getestet werden müssen, verfügt npm über einen Link-Befehl, der eine Verbindung zu Ihrem lokalen Modul herstellen kann. Natürlich können Sie diese auch nachträglich veröffentlichen Die Installation des Plug-In-Tests selbst ist wie die Einführung eines Plug-Ins.
Npm-Paket veröffentlichen
Führen Sie zunächst npm login im Projektstammverzeichnis
$ npm login $ npm publish
aus Wenn hier ein Fehler auftritt, haben Sie möglicherweise die cnpm-Adresse verwendet und müssen das npm-Warehouse zurücksetzen
$ npm config set registry https://registry.npmjs.org/
Aktualisieren Sie dann das npm-Paket. Die Versionsnummer muss größer sein als beim letzten Mal
Postskriptum
Zu diesem Zeitpunkt ist ein NPM-Einstiegspaket fertiggestellt. Ich war sehr bewegt. Als ich anfing, am Frontend zu arbeiten, sah ich, dass die Plug-ins anderer Leute mit nur einer einfachen Installation so schön waren, dass ich es tun wollte Als ich eine Menge unbekannter Dinge sah, war ich sofort entmutigt (Knotenumgebung, Es gibt viele Dinge. Ich habe gerade vue-cli kopiert und ein paar Codes gesehen. Bitte ignorieren Sie es, wenn Sie ein kluger Kerl sind)
Lernen ist ein schrittweiser Prozess. Ohne eine bestimmte Grundlage und eine langfristige Ansammlung von Erfahrung ist es schwierig, den Quellcode von Dingen zu lernen, die von Experten geschrieben wurden. Wenn man kauen muss, ist das in Ordnung, aber die Effizienz fühlt sich nicht so gut an wie Schritt für Schritt.
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
ReactJS-Aktionsformularauswahl
Das obige ist der detaillierte Inhalt vonNpm erstellt ein CLI-Befehlszeilentool. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In diesem Artikel wird erläutert, wie die Effizienz der Hadoop -Datenverarbeitung auf Debian -Systemen verbessert werden kann. Optimierungsstrategien decken Hardware -Upgrades, Parameteranpassungen des Betriebssystems, Änderungen der Hadoop -Konfiguration und die Verwendung effizienter Algorithmen und Tools ab. 1. Hardware -Ressourcenverstärkung stellt sicher, dass alle Knoten konsistente Hardwarekonfigurationen aufweisen, insbesondere die Aufmerksamkeit auf die Leistung von CPU-, Speicher- und Netzwerkgeräten. Die Auswahl von Hochleistungs-Hardwarekomponenten ist wichtig, um die Gesamtverarbeitungsgeschwindigkeit zu verbessern. 2. Betriebssystem -Tunes -Dateideskriptoren und Netzwerkverbindungen: Ändern Sie die Datei /etc/security/limits.conf, um die Obergrenze der Dateideskriptoren und Netzwerkverbindungen zu erhöhen, die gleichzeitig vom System geöffnet werden dürfen. JVM-Parameteranpassung: Einstellen in der Hadoop-env.sh-Datei einstellen

In Debian -Systemen werden Readdir -Systemaufrufe zum Lesen des Verzeichnisinhalts verwendet. Wenn seine Leistung nicht gut ist, probieren Sie die folgende Optimierungsstrategie aus: Vereinfachen Sie die Anzahl der Verzeichnisdateien: Teilen Sie große Verzeichnisse so weit wie möglich in mehrere kleine Verzeichnisse auf und reduzieren Sie die Anzahl der gemäß Readdir -Anrufe verarbeiteten Elemente. Aktivieren Sie den Verzeichnis -Inhalt Caching: Erstellen Sie einen Cache -Mechanismus, aktualisieren Sie den Cache regelmäßig oder bei Änderungen des Verzeichnisinhalts und reduzieren Sie häufige Aufrufe an Readdir. Speicher -Caches (wie Memcached oder Redis) oder lokale Caches (wie Dateien oder Datenbanken) können berücksichtigt werden. Nehmen Sie eine effiziente Datenstruktur an: Wenn Sie das Verzeichnis -Traversal selbst implementieren, wählen Sie effizientere Datenstrukturen (z.

Die Optimierung der Website-Leistungsoptimierung ist untrennbar mit einer detaillierten Analyse von Zugriffsprotokollen untrennwillig. NGINX -Protokoll zeichnet die detaillierten Informationen von Benutzern auf, die die Website besuchen. Wenn Sie diese Daten geschickt verwenden, können Sie die Geschwindigkeit der Website effektiv verbessern. In diesem Artikel werden mehrere Methoden zur Optimierungsoptimierungsmethoden für Website -Leistungsoptimierung vorgestellt. 1. Benutzerverhaltensanalyse und Optimierung. Durch die Analyse des NGINX-Protokolls können wir ein tiefes Verständnis des Benutzerverhaltens erlangen und gezielte Optimierung basierend auf diesem: Hochfrequenzzugriffs-IP-Identifizierung durchführen: Suchen Sie die IP-Adresse mit der höchsten Zugriffsfrequenz und optimieren Sie die Serverressourcenkonfiguration für diese IP-Adressen, z. B. die Erhöhung der Bandbreite oder die Verbesserung der Antwortgeschwindigkeit des spezifischen Inhalts. Statuscode -Analyse: Analysieren Sie die Häufigkeit verschiedener HTTP -Statuscodes (z. B. 404 Fehler), finden Sie Probleme in der Navigation oder des Inhaltsmanagements auf Website und fahren Sie fort

Die Schritte zur Installation eines SSL -Zertifikats auf dem Debian Mail -Server sind wie folgt: 1. Installieren Sie zuerst das OpenSSL -Toolkit und stellen Sie sicher, dass das OpenSSL -Toolkit bereits in Ihrem System installiert ist. Wenn nicht installiert, können Sie den folgenden Befehl installieren: sudoapt-getupdatesudoapt-getinstallopenssl2. Generieren Sie den privaten Schlüssel und die Zertifikatanforderung als nächst

In Debian Systems ist OpenSSL eine wichtige Bibliothek für Verschlüsselung, Entschlüsselung und Zertifikatverwaltung. Um einen Mann-in-the-Middle-Angriff (MITM) zu verhindern, können folgende Maßnahmen ergriffen werden: Verwenden Sie HTTPS: Stellen Sie sicher, dass alle Netzwerkanforderungen das HTTPS-Protokoll anstelle von HTTP verwenden. HTTPS verwendet TLS (Transport Layer Security Protocol), um Kommunikationsdaten zu verschlüsseln, um sicherzustellen, dass die Daten während der Übertragung nicht gestohlen oder manipuliert werden. Überprüfen Sie das Serverzertifikat: Überprüfen Sie das Serverzertifikat im Client manuell, um sicherzustellen, dass es vertrauenswürdig ist. Der Server kann manuell durch die Delegate -Methode der URLSession überprüft werden

In diesem Artikel wird beschrieben, wie nutzlose Softwarepakete und der Speicherplatz im Debian -System freigegeben werden können. Schritt 1: Aktualisieren Sie die Paketliste stellen Sie sicher, dass Ihre Paketliste auf dem neuesten Stand ist: sudoaptupdate Schritt 2: Installierte Pakete anzeigen Verwenden Sie den folgenden Befehl, um alle installierten Pakete anzuzeigen: DPKG-Get-Selections | Grep-VDeinstall-Schritt 3: Identifizieren von redundanten Paketen Verwenden Sie das Handwerks-Tool, um nicht benötigte Pakete zu finden, die nicht mehr benötigt werden. Die Eignung wird Vorschläge bereitstellen, mit denen Sie Pakete sicher löschen können: sudoaptitudesearch '~ pimportant' Dieser Befehl listet die Tags auf

Die Readdir -Funktion im Debian -System ist ein Systemaufruf, der zum Lesen des Verzeichnisgehalts verwendet wird und häufig in der C -Programmierung verwendet wird. In diesem Artikel wird erläutert, wie Readdir in andere Tools integriert wird, um seine Funktionalität zu verbessern. Methode 1: Kombinieren Sie C -Sprachprogramm und Pipeline zuerst ein C -Programm, um die Funktion der Readdir aufzurufen und das Ergebnis auszugeben:#include#include#includeIntmain (intargc, char*argv []) {Dir*Dir; structDirent*Eintrag; if (argc! = 2) {{

Das Upgrade der Zookeeper -Version auf Debian -System kann die folgenden Schritte ausführen: 1. Wenn Sie die vorhandenen Konfiguration und Daten vor einem Upgrade unterstützen, wird dringend empfohlen, die vorhandenen Zookeeper -Konfigurationsdateien und Datenverzeichnisse zu sichern. sudocp-r/var/lib/zookeeper/var/lib/zookeper_backupsudocp/etc/zookeper/conf/zoo.cfg/etc/zookeeper/conf/zookeeper/z
