JavaScript >> Javascript-Tutorial >  >> Tags >> npm

npm-Abhängigkeiten vs. Entwickler-Abhängigkeiten

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

@khriztianmoreno