Dieser Artikel stellt Ihnen hauptsächlich verschiedene Arten der npm-Abhängigkeitspaketverwaltung vor, die Sie kennen sollten. npm ist der Paketmanager in node.js und ein Befehlszeilentool. Der Artikel stellt ihn detailliert anhand von Beispielcode vor Sie können es als Referenz verwenden und dem Editor folgen, um gemeinsam zu lernen.
npm unterstützt derzeit die folgenden Arten der Abhängigkeitspaketverwaltung:
Abhängigkeiten
devDependencies
peerDependencies
optionalDependencies
bundledDependencies / bundleDependencies
If Wenn Sie wissen, welche Art von Abhängigkeitsverwaltung Sie verwenden möchten, können Sie sie in das entsprechende Abhängigkeitsobjekt in package.json einfügen, z. B.:
"devDependencies": { "fw2": "^0.3.2", "grunt": "^1.0.1", "webpack": "^3.6.0" }, "dependencies": { "gulp": "^3.9.1", "hello-else": "^1.0.0" }, "peerDependencies": { }, "optionalDependencies": { }, "bundledDependencies": []
Sehen wir uns das einzeln an:
Abhängigkeiten
Anwendungsabhängigkeiten oder Geschäftsabhängigkeiten sind unsere am häufigsten verwendeten Abhängigkeitspaketverwaltungsobjekte! Es wird verwendet, um die externen Pakete anzugeben, von denen die Anwendung abhängt. Diese Abhängigkeiten sind für die normale Ausführung nach der Veröffentlichung der Anwendung erforderlich, umfassen jedoch keine Pakete, die beim Testen oder beim lokalen Packen verwendet werden. Zur Installation können Sie den folgenden Befehl verwenden:
npm install packageName --save
dependencies ist ein einfaches JSON-Objekt, einschließlich des Paketnamens und der Paketversion, wobei die Paketversion eine Versionsnummer oder eine URL-Adresse sein kann. Zum Beispiel:
{ "dependencies" :{ "foo" : "1.0.0 - 2.9999.9999", // 指定版本范围 "bar" : ">=1.0.2 <2.1.2", "baz" : ">1.0.2 <=2.3.4", "boo" : "2.0.1", // 指定版本 "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0", "asd" : "http://asdf.com/asdf.tar.gz", // 指定包地址 "til" : "~1.2", // 最近可用版本 "elf" : "~1.2.3", "elf" : "^1.2.3", // 兼容版本 "two" : "2.x", // 2.1、2.2、...、2.9皆可用 "thr" : "*", // 任意版本 "thr2": "", // 任意版本 "lat" : "latest", // 当前最新 "dyl" : "file:../dyl", // 本地地址 "xyz" : "git+ssh://git@github.com:npm/npm.git#v1.0.27", // git 地址 "fir" : "git+ssh://git@github.com:npm/npm#semver:^5.0", "wdy" : "git+https://isaacs@github.com/npm/npm.git", "xxy" : "git://github.com/npm/npm.git#v1.0.27", } }
devDependencies
Entwicklungsumgebungsabhängigkeiten, an zweiter Stelle nach der Häufigkeit der Verwendung von Abhängigkeiten! Seine Objektdefinition ist dieselbe wie bei Abhängigkeiten, mit der Ausnahme, dass die darin enthaltenen Pakete nur in der Entwicklungsumgebung und nicht in der Produktionsumgebung verwendet werden. Bei diesen Paketen handelt es sich normalerweise um Unit-Tests oder Verpackungstools wie gulp, grunt, webpack, moca, Coffee usw., die verwendet werden können. Der folgende Befehl wird zur Installation verwendet:
npm install packageName --save-dev
Zum Beispiel:
{ "name": "ethopia-waza", "description": "a delightfully fruity coffee varietal", "version": "1.2.3", "devDependencies": { "coffee-script": "~1.6.3" }, "scripts": { "prepare": "coffee -o lib/ -c src/waza.coffee" }, "main": "lib/waza.js" }
Das Vorbereitungsskript wird vor der Veröffentlichung ausgeführt, sodass Benutzer dies nicht tun Sie müssen sich beim Kompilieren des Projekts darauf verlassen. Im Entwicklungsmodus wird beim Ausführen von npm install auch das Vorbereitungsskript ausgeführt, das während der Entwicklung problemlos getestet werden kann.
Verstehen Sie an dieser Stelle den Unterschied zwischen --save und --save-dev?
peerDependencies
Gleiche Abhängigkeiten oder Peer-Abhängigkeiten werden verwendet, um die Hostversion anzugeben, mit der das aktuelle Paket (d. h. das von Ihnen geschriebene Paket) kompatibel ist. Wie ist es zu verstehen? Stellen Sie sich vor, wir schreiben ein Gulp-Plugin, aber Gulp hat mehrere Hauptversionen. Zu diesem Zeitpunkt können wir peerDependencies verwenden, um Folgendes anzugeben:
{ "name": "gulp-my-plugin", "version": "0.0.1", "peerDependencies": { "gulp": "3.x" } }
Wann Wenn andere unser Plug-in verwenden, teilt peerDependencies dem Benutzer klar mit, welche Hostversion des Plug-ins Sie installieren müssen.
Normalerweise verwenden wir viele Plug-Ins eines Hosts (z. B. gulp) in einem Projekt. Wenn bei der Ausführung von npm install eine Host-Inkompatibilität vorliegt, gibt die CLI eine entsprechende Fehlermeldung aus Wir, zum Beispiel:
npm ERR! peerinvalid The package gulp does not satisfy its siblings' peerDependencies requirements! npm ERR! peerinvalid Peer gulp-cli-config@0.1.3 wants gulp@~3.1.9 npm ERR! peerinvalid Peer gulp-cli-users@0.1.4 wants gulp@~2.3.0
führen den Befehl npm install gulp-my-plugin --save-dev aus, um unser Plug-in zu installieren:
├── gulp-my-plugin@0.0.1 └── gulp@3.9.1
OK, schön!
Beachten Sie, dass npm 1 und npm 2 automatisch dieselben Abhängigkeiten installieren. npm 3 wird nicht mehr automatisch installiert und eine Warnung generiert! Das manuelle Hinzufügen von Abhängigkeiten in der Datei package.json kann gelöst werden.
optionale Abhängigkeiten
Optionale Abhängigkeiten, die das Projekt auch dann noch ausführen kann, wenn die Installation fehlschlägt oder Sie möchten, dass npm weiterhin ausgeführt wird optionale Abhängigkeiten. Darüber hinaus überschreibt optionalDependencies das gleichnamige Abhängigkeitspaket in Abhängigkeiten. Schreiben Sie es daher nicht an beiden Stellen.
Ein optionales Abhängigkeitspaket ist beispielsweise wie ein Plug-In des Programms. Wenn es vorhanden ist, wird die vorhandene Logik ausgeführt. Wenn es nicht vorhanden ist, wird eine andere Logik ausgeführt.
try { var foo = require('foo') var fooVersion = require('foo/package.json').version } catch (er) { foo = null } if ( notGoodFooVersion(fooVersion) ) { foo = null } // .. then later in your program .. if (foo) { foo.doFooThings() }
bundledDependencies / bundleDependencies
Paketabhängigkeiten, bundledDependencies ist ein Array-Objekt, das abhängige Paketnamen enthält. Beim Veröffentlichen werden die Pakete in diesem Objekt in die endgültige Version gepackt die Tasche. Beispiel:
{ "name": "fe-weekly", "description": "ELSE 周刊", "version": "1.0.0", "main": "index.js", "devDependencies": { "fw2": "^0.3.2", "grunt": "^1.0.1", "webpack": "^3.6.0" }, "dependencies": { "gulp": "^3.9.1", "hello-else": "^1.0.0" }, "bundledDependencies": [ "fw2", "hello-else" ] }
Führen Sie den Verpackungsbefehl npm pack aus und das generierte Paket fe-weekly-1.0.0.tgz enthält fw2 und hello-else. Es ist jedoch zu beachten, dass diese beiden Pakete zuerst in devDependencies oder dependencies deklariert werden müssen, da die Verpackung sonst einen Fehler meldet.
Verwandte Empfehlungen:
Spring Boot führt Abhängigkeitspaket Druid ein
Detaillierte Erläuterung der NPM- und Webpack-Konfigurationsmethoden im Knoten. js
Teilen Sie mit, wie Sie die neueste Version von nodejs verwenden, um npm zu installieren
Das obige ist der detaillierte Inhalt vonMehrere npm-Abhängigkeitspaketverwaltungsfreigaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!