Heim Web-Frontend js-Tutorial Npm erstellt ein CLI-Befehlszeilentool

Npm erstellt ein CLI-Befehlszeilentool

Apr 17, 2018 pm 04:14 PM
命令行 工具

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     //测试用例
Nach dem Login kopieren

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"
  },
Nach dem Login kopieren

hinzu Installieren Sie dann eine Abhängigkeit, das von TJ geschriebene Commander-Plug-in,

npm i commander --save
Nach dem Login kopieren

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');  >>引入
Nach dem Login kopieren

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信息
Nach dem Login kopieren

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);
Nach dem Login kopieren

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
Nach dem Login kopieren

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;
  }
};
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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/
Nach dem Login kopieren

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:

Timer mit AngualrJs verwenden

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie Debian die Hadoop -Datenverarbeitungsgeschwindigkeit verbessert Wie Debian die Hadoop -Datenverarbeitungsgeschwindigkeit verbessert Apr 13, 2025 am 11:54 AM

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

So optimieren Sie die Leistung von Debian Readdir So optimieren Sie die Leistung von Debian Readdir Apr 13, 2025 am 08:48 AM

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.

So verwenden Sie NGINX -Protokolle, um die Geschwindigkeit der Website zu verbessern So verwenden Sie NGINX -Protokolle, um die Geschwindigkeit der Website zu verbessern Apr 13, 2025 am 09:09 AM

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

Debian Mail Server SSL -Zertifikat -Installationsmethode Debian Mail Server SSL -Zertifikat -Installationsmethode Apr 13, 2025 am 11:39 AM

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

Wie Debian OpenSSL verhindert, dass Mann-in-the-Middle-Angriffe Wie Debian OpenSSL verhindert, dass Mann-in-the-Middle-Angriffe Apr 13, 2025 am 10:30 AM

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

Wie man Pakete recyceln, die nicht mehr verwendet werden Wie man Pakete recyceln, die nicht mehr verwendet werden Apr 13, 2025 am 08:51 AM

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

Wie Debian Readdir sich in andere Tools integriert Wie Debian Readdir sich in andere Tools integriert Apr 13, 2025 am 09:42 AM

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) {{

So upgraden Sie die Zookeeper -Version auf Debian auf So upgraden Sie die Zookeeper -Version auf Debian auf Apr 13, 2025 am 10:42 AM

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

See all articles