Tabla de contenido

Si has trabajado con JavaScript moderno, seguramente has visto comandos como npm install o npm run dev. npm es una herramienta fundamental en el ecosistema JavaScript y entenderla te abrirá las puertas a trabajar con prácticamente cualquier proyecto frontend o backend moderno.

¿Qué es npm?

npm (Node Package Manager) es el gestor de paquetes oficial de Node.js. Cuando instalas Node.js en tu computadora, npm viene incluido automáticamente.

Su función principal es simple: permite instalar, actualizar y gestionar librerías de terceros (llamadas paquetes o dependencias) en tus proyectos JavaScript. Es el equivalente de Composer para PHP o pip para Python.

Además de gestionar paquetes, npm te permite definir y ejecutar scripts para automatizar tareas como iniciar un servidor de desarrollo, compilar código, correr pruebas, etc.

Puedes verificar si tienes npm instalado con:

node --version
npm --version

Bash

¿Qué es el package.json?

El package.json es el archivo de configuración central de cualquier proyecto que use npm. Guarda información importante del proyecto: su nombre, versión, scripts disponibles y —lo más importante— la lista de todas las dependencias que necesita.

Para crear un package.json desde cero, ejecuta en la carpeta de tu proyecto:

npm init

Bash

Esto te hará una serie de preguntas. Si quieres saltar todo y crear un package.json con valores por defecto:

npm init -y

Bash

Un package.json básico se ve así:

{
  "name": "mi-proyecto",
  "version": "1.0.0",
  "description": "Mi primer proyecto con npm",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
  },
  "dependencies": {
    "express": "^4.18.2"
  },
  "devDependencies": {
    "nodemon": "^3.0.0"
  }
}

Comandos esenciales de npm

Instalar todas las dependencias de un proyecto existente:

npm install

Bash

Este es el primer comando que corres cuando clonas un proyecto. Lee el package.json y descarga todas las dependencias en la carpeta node_modules.

Instalar un paquete nuevo:

npm install express

Bash

Esto descarga el paquete y lo agrega automáticamente a la sección dependencies de tu package.json.

Instalar un paquete solo para desarrollo:

npm install --save-dev nodemon

Bash

Instalar un paquete globalmente (disponible en todo el sistema):

npm install -g create-react-app

Bash

Desinstalar un paquete:

npm uninstall express

Bash

Ver los paquetes instalados:

npm list

Bash

Actualizar todos los paquetes:

npm update

Bash

Dependencias vs devDependencies

Esta distinción es importante cuando despliegas a producción:

dependencies: Son los paquetes que tu aplicación necesita para funcionar en producción. Por ejemplo, si usas Express para crear un servidor, Express es una dependencia de producción.

devDependencies: Son paquetes que solo necesitas durante el desarrollo. Por ejemplo, nodemon (que reinicia el servidor automáticamente al detectar cambios), ESLint (para detectar errores en el código), o Prettier (para formatear código). En producción no los necesitas.

Cuando instalas, la diferencia está en la flag que usas:

npm install express               # → dependencies
npm install --save-dev nodemon    # → devDependencies

Bash

Scripts de npm

Los scripts de npm te permiten definir comandos personalizados y ejecutarlos con npm run nombre-del-script. Los defines en la sección "scripts" del package.json:

{
  "scripts": {
    "start": "node server.js",
    "dev": "nodemon server.js",
    "build": "webpack --mode production",
    "test": "jest"
  }
}

Para ejecutarlos:

npm run dev
npm run build
npm test          # "test" y "start" no necesitan la palabra "run"
npm start

Bash

La carpeta node_modules y .gitignore

Cuando instalas paquetes, npm los descarga en una carpeta llamada node_modules. Esta carpeta puede volverse enorme (miles de archivos, cientos de MB) dependiendo de cuántas dependencias tengas.

Nunca debes subir node_modules a tu repositorio. Agrega esta línea a tu archivo .gitignore:

node_modules/

Cualquier persona que clone tu proyecto puede regenerar la carpeta node_modules simplemente ejecutando npm install, gracias al package.json que sí debes subir.

npm es una de esas herramientas que usarás literalmente todos los días como desarrollador JavaScript. Aprender los comandos básicos y entender cómo funciona el package.json te dará una base sólida para trabajar con cualquier framework moderno como React, Vue, Astro o cualquier otro.