Skip to content

NPM - Guía Esencial

NPM (Node Package Manager) es el gestor de paquetes predeterminado de Node.js. Permite instalar, compartir y gestionar dependencias de proyectos JavaScript.

ComponenteDescripción
CLIHerramienta de línea de comandos para interactuar con paquetes
RegistryBase de datos pública con millones de paquetes
package.jsonArchivo que define las dependencias y scripts del proyecto
node_modulesCarpeta donde se instalan los paquetes
  • Reutilización de código: Acceso a millones de paquetes listos para usar
  • Gestión de versiones: Control preciso de las versiones de dependencias
  • Scripts automatizados: Ejecutar tareas comunes con comandos simples
  • Compartir código: Publicar tus propios paquetes

NPM viene incluido con Node.js. Para verificar que está instalado:

Verificar instalación
# Verificar versión de Node.js
node --version
# v20.10.0
# Verificar versión de NPM
npm --version
# 10.2.3
Actualizar NPM
# Actualizar NPM a la última versión
npm install -g npm@latest
# Verificar la nueva versión
npm --version
Configuración
# Ver configuración actual
npm config list
# Configurar autor por defecto para nuevos proyectos
npm config set init-author-name "Tu Nombre"
npm config set init-author-email "tu@email.com"
# Configurar registro (registry) personalizado
npm config set registry https://registry.npmjs.org/

El archivo package.json es el corazón de cualquier proyecto Node.js.

Inicializar proyecto
# Crear package.json con asistente interactivo
npm init
# Crear package.json con valores por defecto (más rápido)
npm init -y
package.json
{
"name": "mi-proyecto",
"version": "1.0.0",
"description": "Descripción del proyecto",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "jest",
"build": "webpack --mode production"
},
"keywords": ["nodejs", "ejemplo"],
"author": "Tu Nombre",
"license": "MIT",
"dependencies": {
"express": "^4.18.2"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}
CampoDescripción
nameNombre único del paquete
versionVersión semántica (MAJOR.MINOR.PATCH)
scriptsComandos ejecutables con npm run
dependenciesPaquetes necesarios en producción
devDependenciesPaquetes solo para desarrollo

ComandoDescripciónUso
npm install paqueteDependencia de producciónCódigo que tu app necesita
npm install -D paqueteDependencia de desarrolloHerramientas de desarrollo
npm install -g paqueteInstalación globalCLIs y herramientas del sistema
Instalar paquetes
# Instalar una dependencia de producción
npm install express
# Instalar múltiples paquetes
npm install express mongoose dotenv
# Instalar como dependencia de desarrollo
npm install -D nodemon jest eslint
# Instalar globalmente (disponible en todo el sistema)
npm install -g typescript
# Instalar versión específica
npm install express@4.18.2
# Instalar última versión de una major version
npm install express@4
Instalar dependencias
# Instalar todas las dependencias del package.json
npm install
# Atajo
npm i
# Solo dependencias de producción (para deploy)
npm install --production
# o
npm install --omit=dev

🗑️ 5. Desinstalar y Actualizar Paquetes

Section titled “🗑️ 5. Desinstalar y Actualizar Paquetes”
Desinstalar
# Desinstalar un paquete
npm uninstall express
# Desinstalar múltiples paquetes
npm uninstall express mongoose
# Desinstalar paquete global
npm uninstall -g typescript
Actualizar
# Ver paquetes desactualizados
npm outdated
# Actualizar un paquete específico
npm update express
# Actualizar todos los paquetes
npm update
# Actualizar a la última versión (puede romper compatibilidad)
npm install express@latest

Los scripts permiten automatizar tareas comunes del proyecto.

Scripts en package.json
{
"scripts": {
"start": "node src/index.js",
"dev": "nodemon src/index.js",
"build": "tsc && node dist/index.js",
"test": "jest",
"test:watch": "jest --watch",
"lint": "eslint src/",
"lint:fix": "eslint src/ --fix",
"format": "prettier --write src/"
}
}
Ejecutar scripts
# Ejecutar script
npm run dev
npm run build
npm run test
# Scripts especiales (no necesitan 'run')
npm start # equivale a npm run start
npm test # equivale a npm run test
# Ver todos los scripts disponibles
npm run
Scripts con argumentos
# Pasar argumentos a un script
npm run test -- --coverage
npm run build -- --watch
# El -- separa los argumentos de npm de los del script

Usa npm create o npx para iniciar proyectos con frameworks populares:

Crear proyectos
# React (con Vite - recomendado)
npm create vite@latest mi-app-react -- --template react
npm create vite@latest mi-app-react-ts -- --template react-ts
# Vue
npm create vue@latest mi-app-vue
# Next.js
npx create-next-app@latest mi-app-next
# Nuxt
npx nuxi init mi-app-nuxt
# Astro
npm create astro@latest
# SvelteKit
npm create svelte@latest mi-app-svelte
# Angular
npx @angular/cli new mi-app-angular
# Express (API básica)
npx express-generator mi-api
# Create React App (legacy, preferir Vite)
npx create-react-app mi-app

Buscar paquetes
# Buscar paquetes en el registry
npm search express
# Ver información de un paquete
npm info express
# Ver todas las versiones disponibles
npm view express versions
# Ver la última versión
npm view express version
Inspeccionar
# Ver árbol de dependencias
npm list
# Ver solo dependencias directas
npm list --depth=0
# Ver dependencias de producción
npm list --prod
# Ver dónde está instalado un paquete global
npm list -g --depth=0

El package-lock.json registra las versiones exactas de todas las dependencias instaladas, garantizando instalaciones reproducibles.

AspectoDescripción
Versiones exactasGuarda la versión específica de cada paquete
Árbol completoIncluye dependencias de dependencias
IntegridadHash SHA para verificar paquetes
ReproducibilidadMismas versiones en cualquier máquina
package-lock.json
# SIEMPRE incluir en control de versiones
git add package-lock.json
# Para instalaciones limpias y reproducibles
npm ci
# npm ci vs npm install:
# - npm ci: Borra node_modules, instala exactamente lo del lock
# - npm install: Puede actualizar el lock si hay cambios

Caché
# Ver información del caché
npm cache ls
# Limpiar caché (forzado)
npm cache clean --force
# Verificar integridad del caché
npm cache verify
Solucionar problemas
# Reinstalar todas las dependencias
rm -rf node_modules
npm install
# Instalación limpia (mejor opción)
npm ci
# Verificar problemas de seguridad
npm audit
# Corregir vulnerabilidades automáticamente
npm audit fix
# Corregir vulnerabilidades (incluso con breaking changes)
npm audit fix --force

NPM usa Semantic Versioning (SemVer): MAJOR.MINOR.PATCH

ParteCuándo incrementarEjemplo
MAJORCambios incompatibles (breaking changes)1.0.0 → 2.0.0
MINORNueva funcionalidad compatible1.0.0 → 1.1.0
PATCHCorrección de bugs1.0.0 → 1.0.1
SímboloSignificadoEjemploAcepta
^Compatible con minor^1.2.31.2.3 a <2.0.0
~Compatible con patch~1.2.31.2.3 a <1.3.0
*Cualquier versión*Todas
>=Mayor o igual>=1.2.31.2.3 en adelante
ExactaVersión específica1.2.3Solo 1.2.3
Rangos de versiones
{
"dependencies": {
"express": "^4.18.2", // 4.18.2 a <5.0.0
"lodash": "~4.17.21", // 4.17.21 a <4.18.0
"moment": "2.29.4", // Exactamente 2.29.4
"axios": ">=1.0.0" // 1.0.0 o superior
}
}

ComandoDescripción
npm init -yCrear proyecto nuevo
npm installInstalar dependencias
npm install paqueteInstalar paquete
npm install -D paqueteInstalar como dev dependency
npm install -g paqueteInstalar globalmente
npm uninstall paqueteDesinstalar paquete
npm updateActualizar paquetes
npm run scriptEjecutar script
npm list --depth=0Ver dependencias instaladas
npm outdatedVer paquetes desactualizados
npm auditVerificar vulnerabilidades
npm ciInstalación limpia
🐝