Der Hauptunterschied zwischen lokalen und globalen Paketen ist der folgende:

  • Lokale Pakete werden in dem Verzeichnis installiert, in dem du npm install <package-name> ausführst, und sie werden in den Ordner node_modules unter diesem Verzeichnis abgelegt
  • Globale Pakete werden alle an einem einzigen Ort in deinem System abgelegt (wo genau, hängt von deiner Einrichtung ab), unabhängig davon, wo du npm install -g <package-name>

In deinem Code kannst du nur lokale Pakete benötigen:

require('package-name')

Wann sollte man also auf die eine oder andere Weise installieren?

Im Allgemeinen sollten alle Pakete lokal installiert werden.

Das stellt sicher, dass Sie Dutzende von Anwendungen auf Ihrem Computer haben können, die alle eine andere Version jedes Pakets ausführen, wenn es nötig ist.

Das Aktualisieren eines globalen Pakets würde dazu führen, dass alle Ihre Projekte die neue Version verwenden, und wie Sie sich vorstellen können, kann dies zu Albträumen in Bezug auf die Wartung führen, da einige Pakete die Kompatibilität mit weiteren Abhängigkeiten brechen könnten, und so weiter.

Alle Projekte haben ihre eigene lokale Version eines Pakets, auch wenn dies wie eine Verschwendung von Ressourcen erscheinen mag, ist es minimal im Vergleich zu den möglichen negativen Konsequenzen.

Ein Paket sollte global installiert werden, wenn es einen ausführbaren Befehl zur Verfügung stellt, den Sie von der Shell (CLI) aus ausführen können, und der projektübergreifend wiederverwendet wird.

Sie können auch ausführbare Befehle lokal installieren und sie mit npx ausführen, aber einige Pakete sind einfach besser global installiert.

Große Beispiele für beliebte globale Pakete, die Sie vielleicht kennen, sind

  • npm
  • create-react-app
  • vue-cli
  • grunt-cli
  • mocha
  • react-native-cli
  • gatsby-cli
  • forever
  • nodemon

Du hast wahrscheinlich schon einige Pakete global auf deinem System installiert. Du kannst sie sehen, indem du

npm list -g --depth 0

auf deiner Kommandozeile ausführst.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.