Heim > Web-Frontend > js-Tutorial > Mehrere npm-Abhängigkeitspaketverwaltungsfreigaben

Mehrere npm-Abhängigkeitspaketverwaltungsfreigaben

小云云
Freigeben: 2018-01-27 13:52:23
Original
2373 Leute haben es durchsucht

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": []
Nach dem Login kopieren

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

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

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

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

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

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

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

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

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

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!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage