Den huvudsakliga skillnaden mellan lokala och globala paket är följande:
- lokala paket installeras i den katalog där du kör
npm install <package-name>
, och de placeras i mappennode_modules
under denna katalog - globala paket placeras alla på ett enda ställe i ditt system (exakt var beror på din inställning), oavsett var du kör
npm install -g <package-name>
I din kod kan du bara kräva lokala paket:
require('package-name')
så när ska du installera på det ena eller andra sättet?
I allmänhet bör alla paket installeras lokalt.
Detta säkerställer att du kan ha dussintals program i din dator, som alla kör en annan version av varje paket om det behövs.
Uppdatering av ett globalt paket skulle få alla dina projekt att använda den nya versionen, och som du kan föreställa dig kan detta orsaka mardrömmar när det gäller underhåll, eftersom vissa paket kan bryta kompatibiliteten med ytterligare beroenden, och så vidare.
Alla projekt har sin egen lokala version av ett paket, även om detta kan tyckas vara ett slöseri med resurser är det minimalt jämfört med de möjliga negativa konsekvenserna.
Ett paket bör installeras globalt när det tillhandahåller ett exekverbart kommando som du kör från skalet (CLI), och det återanvänds i alla projekt.
Du kan också installera exekverbara kommandon lokalt och köra dem med hjälp av npx, men vissa paket är helt enkelt bättre att installera globalt.
Goda exempel på populära globala paket som du kanske känner till är
npm
create-react-app
vue-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
.
Du har antagligen redan installerat vissa paket globalt på ditt system. Du kan se dem genom att köra
npm list -g --depth 0
på din kommandorad.