tl;dr
Der dependencies
werden von unserer Anwendung zur Laufzeit benötigt. Pakete wie react
, redux
und lodash
sind alles Beispiele für Abhängigkeiten. Die devDependencies
Sie werden nur benötigt, um Ihre Anwendung zu entwickeln oder zu kompilieren. Pakete wie babel
, enzyme
und prettier
sind Beispiele für devDependencies.
npm installieren
Der wirkliche Unterschied zwischen dependencies
und devDependencies
gesehen, wenn npm install
ausgeführt wird .
Wenn Sie npm install
ausführen aus einem Verzeichnis, das eine Datei package.json
enthält (was Sie normalerweise zum Beispiel nach dem Klonen eines Projekts tun).
✅ Alle Pakete in dependencies
werden installiert
✅ Alle Pakete in devDependencies
werden installiert
Wenn Sie npm install <package-name>
ausführen (was Sie normalerweise tun, wenn Sie dem bestehenden Projekt ein neues Paket hinzufügen möchten), dh npm install react
.
✅ Alle Pakete in dependencies
werden installiert
❌ Keines der Pakete in devDependencies
wird installiert
Transitive Abhängigkeiten
Wenn Paket A von Paket B und Paket B von C abhängt, dann ist Paket C eine transitive Abhängigkeit von Paket A. Das bedeutet, dass Paket A installiert werden muss, damit Paket A ordnungsgemäß ausgeführt werden kann. Damit Paket B jedoch ordnungsgemäß ausgeführt werden kann, muss Paket C installiert werden.Warum erwähne ich das? Nun, die dependencies
und devDependencies
sie behandeln auch transitive Abhängigkeiten anders.
Wenn Sie npm install
ausführen aus einem Verzeichnis, das eine package.json
-Datei enthält :
dependencies
✅ Laden Sie alle transitiven Abhängigkeiten herunter.devDependencies
❌ Laden Sie keine transitiven Abhängigkeiten herunter.
Abhängigkeiten vs. devDependencies angeben
Ab NPM 5, wenn Sie npm install <package-name>
ausführen , wird dieses Paket automatisch in Ihrem dependencies
gespeichert in Ihrer Datei package.json
. Wenn Sie angeben möchten, dass das spezifische Paket in devDependencies
enthalten sein soll Stattdessen würde ich das Tag --save-dev
hinzufügen .
npm install prettier --save-dev
Installation auf einem Produktionsserver
Häufig müssen Sie Ihr Projekt auf einem Produktionsserver installieren. Wenn Sie das tun, möchten Sie devDependencies
nicht installieren da Sie sie auf Ihrem Produktionsserver offensichtlich nicht benötigen. Um nur den dependencies
zu installieren (und nicht devDependencies
), können Sie das Tag --production
verwenden .
npm install --production