1238 Stimmen

Was ist der Unterschied zwischen --save und --save-dev?

Was ist der Unterschied zwischen:

npm install [Paketname]

und:

npm install [Paketname] --save

und:

npm install [Paketname] --save-dev

Was bedeutet das? Und was ist wirklich die Auswirkung der --save und --dev Schlüsselwörter?

36voto

wayfarer_boy Punkte 1469

Wie von @andreas-hultgren in dieser Antwort vorgeschlagen und gemäß den npm-Dokumenten:

Wenn jemand plant, Ihr Modul herunterzuladen und in seinem Programm zu verwenden, dann möchte er wahrscheinlich nicht das externe Test- oder Dokumentationsframework herunterladen und erstellen, das Sie verwenden.

Für die Webanwendungsentwicklung platziert jedoch Yeoman (ein Scaffold-Tool, das u. a. eine peer-reviewed, vorgeschriebene package.json-Datei installiert) alle Pakete in devDependencies und nichts in dependencies, daher scheint die Verwendung von --save-dev in der Webanwendungsentwicklung zumindest eine sichere Wahl zu sein.

26voto

alex Punkte 11415

--save-dev speichert die Semver-Spezifikation in das "devDependencies" Array in Ihrer Paketbeschreibungsdatei, --save speichert sie stattdessen in "dependencies".

21voto

Biswadev Punkte 1296

--save-dev wird für Module verwendet, die bei der Entwicklung der Anwendung verwendet werden, die jedoch während des Betriebs in der Produktionsumgebung nicht benötigt werden. --save wird verwendet, um es in der package.json hinzuzufügen und es ist erforderlich für den Betrieb der Anwendung.

Beispiel: express, body-parser, lodash, helmet, mysql werden alle während des Betriebs der Anwendung verwendet, verwenden Sie --save, um sie in Abhängigkeiten einzufügen, während mocha, istanbul, chai, sonarqube-scanner alle während der Entwicklung verwendet werden, daher geben Sie diese in dev-Abhängigkeiten.

npm link oder npm install installieren auch die dev-Abhängigkeitsmodule zusammen mit den Abhängigkeitsmodulen in Ihrem Projektordner.

17voto

Pawan Bishnoi Punkte 1229

Vollständig lesen und vergessen --save-dev Kopfschmerzen

Einfachste Antwort ist, dass --save-dev nützlich ist, wenn Sie Pakete für andere Entwickler erstellen und Ihr Paket auf dem NPM-Register wie lodash, mongoose, express hosten möchten. Wenn Sie einen Node Server erstellen oder schreiben, gibt es keinen Unterschied zwischen --save und --save-dev, weil Ihre Node Server-Implementierung privat für Sie ist und Sie ihn nie auf NPM veröffentlichen werden.

Wie funktioniert die NPM-Installation

Immer wenn wir ein neues Paket mit npm wie npm install express installieren, installiert NPM dieses Paket auf unserem System und platziert es in das node_modules-Verzeichnis. Nun analysiert NPM die package.json-Datei des neu installierten Pakets, d.h. express in diesem Fall, nach der Analyse installiert NPM alle Pakete, die im Abhängigkeiten-Abschnitt der package.json-Datei des express-Pakets aufgeführt waren. Nach der Installation der Pakete, von denen express abhängig war, analysiert NPM erneut die package.json-Datei aller neu installierten Pakete und installiert erneut die Pakete für sie. Dieser Zyklus dauert an, bis alle Pakete im node_modules-Verzeichnis verfügbar sind, um ordnungsgemäß zu funktionieren. Sie können die Paketabhängigkeiten überprüfen, indem Sie in der Eingabeaufforderung npm list ausführen, wobei die Eingabeaufforderung auf den Speicherort Ihres Projektverzeichnisses zeigen sollte.

Wie hängt --save-dev mit den oben erklärten Dingen zusammen

Angenommen, Sie möchten ein neues Paket wie express erstellen. Während der Entwicklung dieses neuen Pakets möchten Sie wahrscheinlich einige Unit-Test-Code schreiben und das Paket mit einem anderen verfügbaren Testpaket testen, nehmen wir an mocha in diesem Fall. Nun wissen Sie, dass mocha nur zum Testen des Pakets erforderlich ist, nicht zum Verwenden des Pakets. In diesem Fall sollten Sie mocha mit dem Flag --save-dev installieren, da NPM es sonst installieren wird, wenn ein Entwickler Ihr Paket mit NPM installiert. Wenn wir also möchten, dass eine Abhängigkeit nicht installiert wird, wenn jemand unser Paket von NPM installiert, müssen wir dieses Paket während der Entwicklungsphase mit --save-dev installieren.

Letzte Sache

Verwechseln Sie --save-dev nicht mit kollaborativer Entwicklung, wenn jemand Ihren Paketcode aus einem Quellversionskontrollsystem wie github geclont hat, wird NPM sicherlich alle devDependencies installieren, also auch das mit --save-dev installierte Paket.

15voto

vikky singh Punkte 326

Wenn Sie ein npm-Paket mit npm install installieren, installieren Sie es als Abhängigkeit.

Das Paket wird automatisch in der package.json-Datei unter der Liste dependencies aufgeführt (ab npm 5: zuvor mussten Sie --save manuell angeben).
z. B. npm install lodash
Nach dem Drücken der Eingabetaste überprüfen Sie Ihre package.json-Datei.

"dependencies": {
    "lodash": "4.x",  
},

Wenn Sie die -D-Flagge oder --save-dev hinzufügen, installieren Sie sie als Entwicklungsabhängigkeit, die sie der devDependencies-Liste hinzufügt.

z. B. npm install --save-dev lite-server
Nach dem Drücken der Eingabetaste überprüfen Sie Ihre package.json-Datei.

"devDependencies": {
    "lite-server": "^2.6.1"
},

Entwicklungsabhängigkeiten sind nur für die Entwicklung gedachte Pakete, die in der Produktion nicht benötigt werden. Zum Beispiel Testpakete, Webpack oder Babel.

Wenn Sie in die Produktion gehen und npm install eingeben und der Ordner eine package.json-Datei enthält, werden sie installiert, da npm davon ausgeht, dass dies ein Entwicklungsdepoy ist.

Sie müssen die --production-Flagge setzen (npm install --production), um diese Entwicklungsabhängigkeiten zu vermeiden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X