Het belangrijkste verschil tussen lokale en globale pakketten is dit:
- lokale pakketten worden geïnstalleerd in de directory waar u
npm install <package-name>
uitvoert, en ze worden in denode_modules
map onder deze directory gezet - globale pakketten worden allemaal op een enkele plaats in uw systeem gezet (waar precies hangt af van uw setup), ongeacht waar u
npm install -g <package-name>
In uw code kunt u alleen lokale pakketten nodig hebben:
require('package-name')
Dus wanneer moet je op de een of andere manier installeren?
In het algemeen moeten alle pakketten lokaal worden geïnstalleerd.
Dit zorgt ervoor dat je tientallen applicaties op je computer kunt hebben, die allemaal een andere versie van elk pakket draaien als dat nodig is.
Het bijwerken van een globaal pakket zou ervoor zorgen dat al je projecten de nieuwe release gebruiken, en zoals je je kunt voorstellen kan dit nachtmerries veroorzaken op het gebied van onderhoud, omdat sommige pakketten de compatibiliteit met andere afhankelijkheden kunnen verbreken, enzovoort.
Alle projecten hebben hun eigen lokale versie van een pakket, ook al lijkt dit een verspilling van middelen, het is minimaal vergeleken met de mogelijke negatieve gevolgen.
Een pakket moet globaal worden geïnstalleerd wanneer het een uitvoerbaar commando levert dat je vanaf de shell (CLI) uitvoert, en het wordt hergebruikt over projecten heen.
Je kunt uitvoerbare commando’s ook lokaal installeren en ze uitvoeren met npx, maar sommige pakketten zijn gewoon beter globaal geïnstalleerd.
Goede voorbeelden van populaire globale pakketten die u wellicht kent zijn
npm
create-react-app
vue-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
U hebt waarschijnlijk al enkele pakketten globaal op uw systeem geïnstalleerd. U kunt ze zien door
npm list -g --depth 0
op uw commandoregel uit te voeren.