La principal diferencia entre los paquetes locales y globales es esta:
- los paquetes locales se instalan en el directorio donde se ejecuta
npm install <package-name>
, y se ponen en la carpetanode_modules
bajo este directorio - los paquetes globales se ponen todos en un único lugar de tu sistema (exactamente dónde depende de tu configuración), independientemente de dónde ejecutes
npm install -g <package-name>
En tu código sólo puedes requerir paquetes locales:
require('package-name')
¿Cuándo debes instalar de una forma u otra?
En general, todos los paquetes deberían instalarse localmente.
Esto asegura que puedas tener docenas de aplicaciones en tu ordenador, todas ejecutando una versión diferente de cada paquete si es necesario.
Actualizar un paquete global haría que todos tus proyectos usaran la nueva versión, y como puedes imaginar esto podría causar pesadillas en términos de mantenimiento, ya que algunos paquetes podrían romper la compatibilidad con otras dependencias, etc.
Todos los proyectos tienen su propia versión local de un paquete, incluso si esto puede parecer un desperdicio de recursos, es mínimo en comparación con las posibles consecuencias negativas.
Un paquete debe ser instalado globalmente cuando proporciona un comando ejecutable que se ejecuta desde el shell (CLI), y se reutiliza a través de los proyectos.
También puede instalar comandos ejecutables localmente y ejecutarlos usando npx, pero algunos paquetes son simplemente mejor instalados globalmente.
Grandes ejemplos de paquetes globales populares que puede conocer son
npm
create-react-app
vue-cli
grunt-cli
mocha
react-native-cli
gatsby-cli
forever
nodemon
.
Probablemente ya tengas algunos paquetes instalados globalmente en tu sistema. Puede verlos ejecutando
npm list -g --depth 0
en su línea de comandos.