La principale différence entre les paquets locaux et globaux est la suivante :
- les paquets locaux sont installés dans le répertoire où vous exécutez
npm install <package-name>
, et ils sont placés dans le dossiernode_modules
sous ce répertoire - les paquets globaux sont tous placés à un seul endroit dans votre système (l’endroit exact dépend de votre configuration), indépendamment de l’endroit où vous exécutez
npm install -g <package-name>
Dans votre code, vous ne pouvez exiger que des paquets locaux :
require('package-name')
alors quand devez-vous installer d’une manière ou d’une autre ?
En général, tous les paquets devraient être installés localement.
Cela vous assure que vous pouvez avoir des dizaines d’applications dans votre ordinateur, toutes exécutant une version différente de chaque paquet si nécessaire.
Mettre à jour un paquet global ferait que tous vos projets utilisent la nouvelle version, et comme vous pouvez l’imaginer, cela pourrait causer des cauchemars en termes de maintenance, car certains paquets pourraient briser la compatibilité avec d’autres dépendances, et ainsi de suite.
Tous les projets ont leur propre version locale d’un paquet, même si cela peut sembler être un gaspillage de ressources, c’est minime par rapport aux conséquences négatives possibles.
Un paquet devrait être installé globalement lorsqu’il fournit une commande exécutable que vous exécutez à partir du shell (CLI), et qu’il est réutilisé à travers les projets.
Vous pouvez également installer des commandes exécutables localement et les exécuter en utilisant npx, mais certains paquets sont juste mieux installés globalement.
De bons exemples de paquets globaux populaires que vous pourriez connaître sont
npm
create-react-app
vue-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
.
Vous avez probablement certains paquets installés globalement déjà sur votre système. Vous pouvez les voir en exécutant
npm list -g --depth 0
sur votre ligne de commande.