Si te estás preguntando qué es npm, la respuesta corta es que es el gestor de paquetes por defecto para Node.js y la pieza central que permite a los desarrolladores de JavaScript compartir y reutilizar código de forma eficiente.

En la práctica, npm (Node Package Manager) funciona como una inmensa biblioteca de funciones y herramientas listas para usar, lo que evita que tengas que “reinventar la rueda” en cada proyecto.

npm y Node.js: El binomio inseparable

Es imposible entender qué es npm y Node.js por separado. Mientras que Node.js es el entorno de ejecución que permite correr JavaScript fuera del navegador, npm es la herramienta que gestiona las librerías que ese entorno necesita.

Cuando instalas Node.js en tu sistema, npm se instala automáticamente. Puedes verificarlo corriendo estos comandos en tu terminal:

node -v
npm -v

¿Para qué sirve npm realmente?

Muchos principiantes creen que npm es solo un comando de terminal, pero en realidad se compone de tres partes distintas que cumplen funciones específicas:

  1. El Sitio Web: Donde puedes buscar paquetes, configurar perfiles y gestionar organizaciones.
  2. El Registro (Registry): Una base de datos masiva que contiene más de un millón de paquetes de software públicos y privados.
  3. La Interfaz de Línea de Comandos (CLI): La herramienta que usas en tu terminal para interactuar con el registro e instalar las librerías.

Cómo instalar paquetes con npm

La funcionalidad estrella es instalar paquetes con npm. Existen dos formas principales de hacerlo dependiendo del alcance que necesites.

1. Instalación Local (Recomendado)

Es la forma estándar. El paquete se descarga solo para el proyecto en el que estás trabajando y se guarda en la carpeta node_modules.

npm install nombre-del-paquete

2. Instalación Global

Se usa para herramientas que quieres ejecutar desde cualquier lugar de tu sistema (como CLIs de frameworks).

npm install -g nombre-del-paquete

Tip de Senior: Evita las instalaciones globales a menos que sea estrictamente necesario. Es mejor usar npx para ejecutar herramientas de un solo uso sin ensuciar tu sistema.


Anatomía de un proyecto npm: package.json vs package-lock.json

Cuando ejecutas npm init, se crea un archivo llamado package.json. Sin embargo, al instalar tu primera librería, aparecerá un segundo archivo: package-lock.json. Entender la diferencia es lo que separa a un Junior de un Senior.

ArchivoFunción Principal¿Se debe subir a Git?
package.jsonDefine las dependencias deseadas y metadatos del proyecto.
package-lock.jsonRegistra la versión exacta instalada y el árbol de dependencias.Sí (Obligatorio)

El package-lock.json garantiza que todos los desarrolladores del equipo tengan exactamente las mismas versiones de las librerías, evitando el clásico “en mi computadora sí funciona”.

npm vs npx: ¿Cuál es la diferencia?

Una de las dudas más frecuentes es para qué sirve npx frente a npm. Aquí te lo explico de forma simple:

  • npm: Se encarga de instalar y gestionar paquetes.
  • npx: Es un ejecutor de paquetes. Permite correr comandos de paquetes que están en el registro sin necesidad de instalarlos permanentemente.

Ejemplo real: Si quieres probar una herramienta de scaffolding como create-react-app una sola vez:

# Con npx (No instala nada permanentemente)
npx create-react-app mi-app

# Con npm (Tendrías que instalarlo globalmente primero)
npm install -g create-react-app
create-react-app mi-app

Errores comunes al usar npm

1. Error EACCES (Permisos denegados)

Ocurre frecuentemente al intentar instalar paquetes globales. Nunca uses sudo npm install. La solución correcta es configurar un gestor de versiones como nvm (Node Version Manager) o cambiar el directorio por defecto de npm.

2. Vulnerabilidades de seguridad

Si ves un mensaje que dice “found X vulnerabilities”, no entres en pánico. npm tiene una herramienta integrada para solucionar esto:

npm audit fix

Artículos relacionados