Główna różnica między pakietami lokalnymi i globalnymi jest następująca:
-  pakiety lokalne są instalowane w katalogu, w którym uruchamiasz 
npm install <package-name>, i są one umieszczane w folderzenode_modulespod tym katalogiem -  pakiety globalne są wszystkie umieszczane w jednym miejscu w twoim systemie (dokładnie gdzie zależy od twojej konfiguracji), niezależnie od tego, gdzie uruchamiasz 
npm install -g <package-name> 
W twoim kodzie możesz wymagać tylko pakietów lokalnych:
require('package-name')
więc kiedy powinieneś zainstalować w ten czy inny sposób?
Ogólnie, wszystkie pakiety powinny być zainstalowane lokalnie.
To daje pewność, że możesz mieć dziesiątki aplikacji w swoim komputerze, wszystkie uruchamiające inną wersję każdego pakietu w razie potrzeby.
Aktualizacja globalnego pakietu sprawi, że wszystkie twoje projekty będą używać nowego wydania, i jak możesz sobie wyobrazić, może to powodować koszmary w zakresie konserwacji, ponieważ niektóre pakiety mogą złamać kompatybilność z dalszymi zależnościami, i tak dalej.
Wszystkie projekty mają swoją własną lokalną wersję pakietu, nawet jeśli może się to wydawać marnowaniem zasobów, jest to minimalne w porównaniu do możliwych negatywnych konsekwencji.
Pakiet powinien być zainstalowany globalnie, gdy dostarcza wykonywalną komendę, którą uruchamiasz z powłoki (CLI), i jest ona ponownie używana w różnych projektach.
Możesz również zainstalować wykonywalne komendy lokalnie i uruchamiać je używając npx, ale niektóre pakiety są po prostu lepiej zainstalowane globalnie.
Dobrymi przykładami popularnych globalnych pakietów, które możesz znać są
npmcreate-react-appvue-cligrunt-climochareact-native-cligatsby-cliforevernodemon
.
Prawdopodobnie masz już jakieś pakiety zainstalowane globalnie w swoim systemie. Możesz je zobaczyć uruchamiając
npm list -g --depth 0
w wierszu poleceń.
.