Dependencias globales vs locales: por qué local es casi siempre mejor

La instalación global de paquetes npm es tentadora pero causa problemas. Aprende por qué instalar localmente en cada proyecto es la práctica profesional correcta y cómo gestionar herramientas globales de forma segura.

Cuando descubres que puedes instalar una herramienta globalmente con `npm install -g`, parece la solución perfecta. Una sola instalación y la tienes disponible en todo el sistema. Pero esta comodidad tiene un costo alto: conflictos de versiones, problemas de permisos y dificultades para compartir proyectos.

En Esta lección vas a entender por qué la instalación local (dentro de cada proyecto) es la práctica profesional correcta y cómo trabajar con herramientas globales de forma que minimices problemas.

Al terminar, sabrás cuándo usar instalación global (casi nunca) y cómo estructurar tus proyectos para que las dependencias estén correctamente aisladas.

  • Una instalación, muchos problemas.
  • Cuando instalas un paquete globalmente con -g, queda disponible para todo el sistema. Pero aquí vienen los problemas: si tienes Proyecto A que requiere Express 4 y Proyecto B que requiere Express 5, ¿cuál instalación global usarás? No puedes tener ambas.
  • Además, cuando compartes tu código con otros (o despliegas), las dependencias globales no se instalan automáticamente. El usuario tiene que instalar las mismas herramientas globalmente para que el proyecto funcione.
  • Solo puedes tener una versión del paquete en todo el sistema
  • No se instala automáticamente en otros entornos

El problema de instalar globalmente

Una instalación, muchos problemas.

Cuando instalas un paquete globalmente con -g, queda disponible para todo el sistema. Pero aquí vienen los problemas: si tienes Proyecto A que requiere Express 4 y Proyecto B que requiere Express 5, ¿cuál instalación global usarás? No puedes tener ambas.

Además, cuando compartes tu código con otros (o despliegas), las dependencias globales no se instalan automáticamente. El usuario tiene que instalar las mismas herramientas globalmente para que el proyecto funcione.

  • Solo puedes tener una versión del paquete en todo el sistema
  • No se instala automáticamente en otros entornos
  • Requiere permisos de administrador en algunos sistemas
  • Difícil de replicar en diferentes máquinas

La solución: instalación local por proyecto

Cada proyecto con sus propias versiones.

Instalar localmente (sin -g) guarda el paquete en node_modules dentro de tu proyecto. Cada proyecto puede tener su propia versión de Express, sin conflictos. Además, package.json documenta exactamente qué necesita el proyecto.

Cuando alguien clona tu repositorio y hace npm install, obtiene automáticamente las versiones correctas de todo.

Cuándo (y cómo) usar instalación global

Hay excepciones válidas para lo global.

La instalación global tiene sentido solo para herramientas de sistema que no están vinculadas a un proyecto específico: CLI de npm, nodemon global para scripts pequeños, o herramientas de conveniencia personal.

Para proyectos reales, usa npx para ejecutar comandos de paquetes sin instalarlos globalmente. npx descarga el paquete temporalmente, lo ejecuta y lo descarta.

  • npm mismo se instala global (necesario)
  • Herramientas personales no vinculadas a proyectos
  • Para proyectos: npx o instalación local

npx: la forma correcta de ejecutar sin instalar

Ejecutar paquetes sin ensuciar el sistema.

npx viene con npm y te permite ejecutar paquetes sin instalarlos globalmente. El paquete se descarga temporalmente, se ejecuta y listo. Esto es perfecto para create-react-app, typescript o cualquier CLI que solo necesitas una vez.

El downside es que cada ejecución descarga el paquete. Pero para comandos que usas esporádicamente, es mucho mejor que ensuciar el sistema con versiones globales.

Verificar dónde se instalan los paquetes

Know where your packages live.

npm prefix te dice dónde npm instala paquetes globales. npm root te dice dónde están los paquetes locales. Saber esto es útil cuando necesitas encontrar ejecutables o configurar el PATH.

Los ejecutables de paquetes locales están en node_modules/.bin, no en el PATH global. Por eso npm run ejecuta esos comandos automáticamente.

NPM
07

Dependencias globales vs locales: por qué local es casi siempre mejor

La instalación global de paquetes npm es tentadora pero causa problemas. Aprende por qué instalar localmente en cada proyecto es la práctica profesional correcta y cómo gestionar herramientas globales de forma segura.

Código del tema: npm install -g

📘 Teoría

El problema de instalar globalmente

Una instalación, muchos problemas.

Cuando instalas un paquete globalmente con -g, queda disponible para todo el sistema. Pero aquí vienen los problemas: si tienes Proyecto A que requiere Express 4 y Proyecto B que requiere Express 5, ¿cuál instalación global usarás? No puedes tener ambas.

Además, cuando compartes tu código con otros (o despliegas), las dependencias globales no se instalan automáticamente. El usuario tiene que instalar las mismas herramientas globalmente para que el proyecto funcione.

  • Solo puedes tener una versión del paquete en todo el sistema
  • No se instala automáticamente en otros entornos
  • Requiere permisos de administrador en algunos sistemas
  • Difícil de replicar en diferentes máquinas

La solución: instalación local por proyecto

Cada proyecto con sus propias versiones.

Instalar localmente (sin -g) guarda el paquete en node_modules dentro de tu proyecto. Cada proyecto puede tener su propia versión de Express, sin conflictos. Además, package.json documenta exactamente qué necesita el proyecto.

Cuando alguien clona tu repositorio y hace npm install, obtiene automáticamente las versiones correctas de todo.

Instalar local vs global
# ❌ Global (un solo lugar para todos)
npm install -g express

# ✓ Local (dentro del proyecto)
npm install express

# o con npx (ejecutar sin instalar)
npx create-react-app mi-app

Cuándo (y cómo) usar instalación global

Hay excepciones válidas para lo global.

La instalación global tiene sentido solo para herramientas de sistema que no están vinculadas a un proyecto específico: CLI de npm, nodemon global para scripts pequeños, o herramientas de conveniencia personal.

Para proyectos reales, usa npx para ejecutar comandos de paquetes sin instalarlos globalmente. npx descarga el paquete temporalmente, lo ejecuta y lo descarta.

  • npm mismo se instala global (necesario)
  • Herramientas personales no vinculadas a proyectos
  • Para proyectos: npx o instalación local

npx: la forma correcta de ejecutar sin instalar

Ejecutar paquetes sin ensuciar el sistema.

npx viene con npm y te permite ejecutar paquetes sin instalarlos globalmente. El paquete se descarga temporalmente, se ejecuta y listo. Esto es perfecto para create-react-app, typescript o cualquier CLI que solo necesitas una vez.

El downside es que cada ejecución descarga el paquete. Pero para comandos que usas esporádicamente, es mucho mejor que ensuciar el sistema con versiones globales.

Usar npx
# Ejecutar sin instalar globalmente
npx create-react-app mi-proyecto
npx typescript --init
npx serve .

# Instalar solo para este proyecto
npm install --save-dev serve

Verificar dónde se instalan los paquetes

Know where your packages live.

1

npm prefix te dice dónde npm instala paquetes globales. npm root te dice dónde están los paquetes locales. Saber esto es útil cuando necesitas encontrar ejecutables o configurar el PATH.

2

Los ejecutables de paquetes locales están en node_modules/.bin, no en el PATH global. Por eso npm run ejecuta esos comandos automáticamente.

Ver ubicaciones
# Ver ubicación global
npm prefix -g

# Ver ubicación local (del proyecto actual)
npm root

# Ver estructura de node_modules
ls node_modules/.bin

🧪 Aprende probando

Ejemplo Ejemplo: global vs local en acción Compara los efectos de instalar global vs local.

🏁 Retos

Reto Reto 1: Decidir instalación correcta Elige entre global, local o npx.
Reto Reto 2: Verificar ubicaciones Usa npm prefix y npm root para ver ubicaciones.

🧰 Recursos

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .