Den vigtigste forskel mellem lokale og globale pakker er følgende:
- lokale pakker installeres i den mappe, hvor du kører
npm install <package-name>
, og de lægges i mappennode_modules
under denne mappe - globale pakker lægges alle et enkelt sted i dit system (præcis hvor afhænger af din opsætning), uanset hvor du kører
npm install -g <package-name>
I din kode kan du kun kræve lokale pakker:
require('package-name')
så hvornår skal du installere på den ene eller den anden måde?
Generelt bør alle pakker installeres lokalt.
Dette sikrer, at du kan have snesevis af programmer på din computer, der alle kører en anden version af hver pakke, hvis det er nødvendigt.
En opdatering af en global pakke ville få alle dine projekter til at bruge den nye version, og som du kan forestille dig, kan det give mareridt med hensyn til vedligeholdelse, da nogle pakker kan bryde kompatibiliteten med andre afhængigheder osv.
Alle projekter har deres egen lokale version af en pakke, selv om det kan virke som spild af ressourcer, er det minimalt i forhold til de mulige negative konsekvenser.
En pakke bør installeres globalt, når den leverer en eksekverbar kommando, som du kører fra skallen (CLI), og den genbruges på tværs af projekter.
Du kan også installere eksekverbare kommandoer lokalt og køre dem med npx, men nogle pakker er bare bedre installeret globalt.
Gode eksempler på populære globale pakker, som du måske kender, er
npm
create-react-app
vue-cli
grunt-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
Du har sandsynligvis nogle pakker installeret globalt allerede på dit system. Du kan se dem ved at køre
npm list -g --depth 0
på din kommandolinje.