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 Ordnernode_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.