Cómo Actualizar Todas las Dependencias de Node.js a la Última Versión
Aprende a actualizar todas las dependencias de Node.js con npm-check-updates, el modo interactivo, el modo doctor y las mejores prácticas de seguridad de la cadena de suministro.
Actualizado Publicado 21 min de lectura

Node.js tiene un gran ecosistema de paquetes que puedes incorporar a tus proyectos. Estos paquetes son tus dependencias, gestionadas por npm (Node Package Manager) o herramientas alternativas como pnpm, Yarn y Bun.
Las dependencias viven en un archivo llamado package.json en la raíz de tu proyecto. Este archivo registra el nombre de tu proyecto, la versión, los scripts y cada dependencia que necesita. Aquí tienes una entrada típica:
"dependencies": {
"express": "^4.17.1"
}El número de versión usa prefijos de versionado semántico. El prefijo ^ significa “cualquier versión compatible con 4.x.x” – así que ^4.17.1 acepta cualquier versión desde 4.17.1 hasta (sin incluir) 5.0.0. El prefijo ~ es más restrictivo, aceptando solo actualizaciones patch dentro de la misma versión minor (p. ej., ~4.17.1 significa 4.17.x). Una versión exacta como 4.17.1 bloquea a esa release concreta.
Para instalar dependencias, ejecuta npm install en tu terminal. Esto descarga paquetes del registro de npm a una carpeta node_modules.
Si aún no tienes Node.js instalado, mira cómo instalar Node.js usando NVM – es la forma recomendada de gestionar múltiples versiones de Node.js. Los usuarios de Fish shell también pueden ver cómo usar NVM con Fish Shell.
Mantener esas dependencias actualizadas es importante. Los paquetes desactualizados acumulan vulnerabilidades de seguridad, se pierden mejoras de rendimiento y con el tiempo se vuelven incompatibles entre sí. Esta guía cubre cómo actualizar las dependencias de Node.js de forma segura en 2026.
Por qué deberías actualizar las dependencias de Node.js con regularidad
Las actualizaciones regulares de dependencias te dan:
- Parches de seguridad para vulnerabilidades conocidas
- Nuevas funcionalidades y mejoras de API
- Optimizaciones de rendimiento de cambios upstream
- Correcciones de bugs que resuelven problemas en tu código
- Mejor compatibilidad con las últimas versiones de Node.js
Solo en 2025, investigadores de seguridad marcaron casi 455.000 paquetes maliciosos en npm. Los ataques a la cadena de suministro son una amenaza real y creciente. Ejecutar dependencias desactualizadas expone tu proyecto a exploits conocidos que ya han sido parcheados upstream.
Pero actualizar no está libre de riesgos.
Breaking changes
Las subidas de versión major (p. ej., Express 4.x a 5.x) pueden incluir breaking changes en la API. Revisa siempre el changelog antes de actualizar a una nueva versión major. Una función en la que confías podría haber sido renombrada, eliminada, o haber cambiado sus parámetros. Usa una estrategia de actualización por etapas (primero patch, luego minor, luego major) para aislar problemas.
Con las herramientas y el flujo de trabajo adecuados, puedes actualizar sin romper producción.
Entendiendo el versionado semántico (semver)
Antes de meterte con los comandos de actualización, entiende cómo funcionan los números de versión de npm. Cada paquete sigue la convención MAJOR.MINOR.PATCH:
| Parte de versión | Qué cambia | Ejemplo |
|---|---|---|
| MAJOR (1ª) | Breaking changes, cambios incompatibles en la API | 4.17.1 → 5.0.0 |
| MINOR (2ª) | Nuevas funcionalidades, retrocompatible | 4.17.1 → 4.18.0 |
| PATCH (3ª) | Correcciones de bugs, parches de seguridad, retrocompatible | 4.17.1 → 4.17.2 |
Referencia rápida de prefijos semver
^4.17.1 (caret) – permite actualizaciones minor y patch dentro de 4.x.x. Este es el comportamiento por defecto de npm.
~4.17.1 (tilde) – permite solo actualizaciones patch dentro de 4.17.x.
4.17.1 (exacta) – bloquea a esa versión exacta. Sin actualizaciones automáticas.
>=4.17.1 – cualquier versión igual o superior a 4.17.1.
La mayoría de archivos package.json usan prefijos ^. Esto significa que ejecutar npm install traerá la última release patch o minor compatible – pero nunca una nueva versión major. Para saltar entre versiones major, necesitas una herramienta como npm-check-updates.
Cómo actualizar todas las dependencias de Node.js con npm-check-updates
npm-check-updates (ncu) es la herramienta de referencia para subir dependencias a sus últimas versiones. Reescribe los números de versión en tu package.json sin instalar nada. Ejecutas npm install después. A fecha de 2026, ncu está en v22+ y requiere Node.js ^20.19.0 || ^22.12.0 || >=24.0.0 con npm >=10.0.0.
1. Instalar npm-check-updates
Tienes dos opciones: instalación global o npx.
npx (Recomendado)
npx npm-check-updatesEjecuta ncu sin instalar nada globalmente. Este es el enfoque recomendado. Siempre usa la última versión y no contamina tus paquetes npm globales.
Instalación global
npm install -g npm-check-updatesInstala ncu globalmente para poder ejecutar ncu directamente desde cualquier proyecto. Tendrás que ejecutar npm update -g npm-check-updates periódicamente para mantenerlo al día.
Importante: npx ncu no funciona
Usa el nombre completo npx npm-check-updates. La forma corta npx ncu resuelve a un paquete completamente distinto (sin relación) en npm. Es un error común que lleva a errores confusos.
2. Comprobar qué paquetes están desactualizados
Ejecuta ncu en el directorio de tu proyecto para ver qué paquetes tienen versiones más nuevas disponibles:
ncuLa salida se ve así:
express ^4.21.0 → ^5.1.0
cors ^2.8.5 → ^3.0.0
dotenv ^16.4.5 → ^16.4.7
uuid ^9.0.1 → ^11.1.0También puedes usar el comando integrado de npm como alternativa:
npm outdatedLa diferencia: npm outdated muestra lo que está disponible dentro de tus rangos semver actuales. ncu muestra las últimas versiones absolutas sin importar las restricciones semver – incluyendo saltos de versión major.
3. Actualizar package.json a las últimas versiones
Para reescribir package.json con los últimos números de versión:
ncu -uEsto actualiza las cadenas de versión en package.json pero no instala nada todavía. Verás una salida como:
Upgrading /home/user/myproject/package.json
[====================] 5/5 100%
express ^4.21.0 → ^5.1.0
cors ^2.8.5 → ^3.0.0
dotenv ^16.4.5 → ^16.4.7
uuid ^9.0.1 → ^11.1.0
morgan ^1.10.0 → ^1.10.1
Run npm install to install new versions.4. Instalar los paquetes actualizados
Ahora instala las nuevas versiones:
npm installEsto descarga los paquetes actualizados a node_modules. Ejecuta tus tests después para asegurarte de que nada se rompió.
Referencia rápida: comandos de npm-check-updates
| Comando | Qué hace |
|---|---|
ncu |
Mostrar paquetes desactualizados (solo lectura) |
ncu -u |
Actualizar package.json a las últimas versiones |
ncu -i |
Modo interactivo – elige paquetes uno a uno |
ncu --doctor -u |
Probar actualizaciones iterativamente para encontrar breaking changes |
ncu --target patch |
Sugerir solo actualizaciones a nivel patch |
ncu --target minor |
Sugerir solo actualizaciones minor + patch |
ncu --filter express |
Comprobar solo paquetes específicos |
ncu --reject react |
Excluir paquetes específicos de las actualizaciones |
ncu --dep prod |
Comprobar solo dependencias de producción |
ncu --cooldown 7 |
Omitir paquetes publicados hace menos de 7 días |
Usar el modo interactivo para actualizar selectivamente
Cuando no quieres actualizar todo de golpe, usa el modo interactivo:
ncu -iEsto muestra una lista de paquetes desactualizados con casillas de verificación. Usa las flechas para navegar y la barra espaciadora para activar o desactivar paquetes individuales. Pulsa Enter para aplicar tus selecciones.
El modo interactivo es útil cuando:
- Quieres actualizar primero unos pocos paquetes seguros y encargarte de los arriesgados después
- Estás haciendo un triage en un proyecto con muchas dependencias desactualizadas
- Quieres omitir paquetes que sabes que tienen breaking changes
Organiza la salida por tipo de actualización
Añade --format group para organizar la lista por actualizaciones major, minor y patch:
ncu -i --format groupAsí es fácil aprobar rápidamente todas las actualizaciones patch y omitir las major.
Usar el modo doctor para actualizaciones major seguras
Las actualizaciones de versión major son la parte más arriesgada de actualizar dependencias. El modo doctor lo gestiona automáticamente actualizando paquetes de forma iterativa y ejecutando tu suite de tests para encontrar exactamente qué actualización rompe las cosas.
ncu --doctor -uAsí es como funciona:
- Ejecuta tu suite de tests primero para establecer una línea base (los tests deben pasar inicialmente)
- Actualiza todos los paquetes a sus últimas versiones
- Ejecuta los tests de nuevo
- Si los tests fallan, usa un enfoque de búsqueda binaria. Revierte la mitad de las actualizaciones, prueba, y va acotando hasta encontrar el paquete específico que causa el fallo.
- Mantiene todas las actualizaciones que pasan y revierte solo la que rompe
- Repite hasta que todos los paquetes estén probados
Recomendado para actualizaciones major
El modo doctor es la forma más segura de manejar grandes saltos de versión. En lugar de adivinar qué paquete rompió tu app, la herramienta lo localiza por ti. La contrapartida: necesitas una suite de tests funcional, y requiere el flag -u para aplicar los cambios de verdad.
Disponible desde ncu v8, el modo doctor se ha convertido en una parte estándar de los flujos de trabajo de actualización de dependencias. Funciona con cualquier test runner que salga con un código distinto de cero en caso de fallo.
Apuntar a niveles de actualización específicos con ncu
A veces no quieres lo último de todo. El flag --target de ncu te permite controlar lo agresivas que son las actualizaciones:
# Solo actualizaciones patch (correcciones de bugs, parches de seguridad)
ncu --target patch
# Minor + patch (nuevas funcionalidades, sin breaking changes)
ncu --target minor
# Permanecer dentro del rango semver actual (lo mismo que haría npm install)
ncu --target semver
# Versiones pre-release etiquetadas @next
ncu --target @next
# El número de versión más alto sin importar el dist-tag
ncu --target greatestUn enfoque por etapas funciona bien en la práctica:
ncu --target patch -u && npm install && npm test– seguro, aplica de inmediatoncu --target minor -u && npm install && npm test– normalmente seguro, prueba después- Maneja las actualizaciones major individualmente con el modo doctor
También puedes filtrar qué paquetes actualizar:
# Solo actualizar paquetes específicos
ncu --filter express,cors
# Actualizar todo excepto paquetes específicos
ncu --reject react,react-dom
# Usar comodines
ncu --filter "@types/*"
# Solo dependencias de producción (omite devDependencies)
ncu --dep prodActualizar dependencias con pnpm, Yarn y Bun
npm-check-updates funciona con cualquier gestor de paquetes (solo modifica package.json). Pero cada gestor de paquetes también tiene sus propios comandos de actualización integrados:
npm
# Comprobar desactualizados (dentro del rango semver)
npm outdated
# Actualizar dentro de rangos semver
npm update
# Actualizar package.json a latest + instalar
npx npm-check-updates -u
npm installpnpm
# Comprobar desactualizados
pnpm outdated
# Actualizar dentro de rangos semver
pnpm update
# Actualizar a las últimas versiones (ignorando rangos semver)
pnpm update --latest
# Modo de actualización interactivo
pnpm update --interactive --latestYarn
# Comprobar desactualizados (Yarn 1.x / Classic)
yarn outdated
# Actualizar dentro de rangos semver
yarn upgrade
# Actualización interactiva (Yarn Berry / 2+)
yarn up -i
# Actualizar a latest (Yarn Berry)
yarn up --interactiveBun
# Actualizar dependencias dentro de rangos semver
bun update
# Actualizar a las últimas versiones
bun update --latest
# Comprobar paquetes desactualizados
bun outdatedPara profundizar más, mira cómo actualizar paquetes en Bun. También puedes leer nuestra comparativa de Bun vs npm, Yarn, pnpm y otros para elegir el gestor de paquetes adecuado para tu proyecto.
Todas estas herramientas respetan los rangos de versión de package.json por defecto. Para saltar entre versiones major, normalmente necesitas el flag --latest (pnpm, Bun) o una herramienta como ncu.
Seguridad de la cadena de suministro: cooldowns de dependencias y antigüedad de versiones
Esta sección no existía cuando se escribió este artículo por primera vez. Desde entonces, la seguridad de la cadena de suministro se ha convertido en una parte central de la gestión de dependencias.
Los ataques a la cadena de suministro en npm se han disparado. En 2025, investigadores de seguridad identificaron casi 455.000 paquetes maliciosos en el registro de npm. Los atacantes secuestran nombres de paquetes populares, inyectan malware en actualizaciones legítimas, o hacen typosquatting de nombres de paquetes comunes. El compromiso de Axios en marzo de 2026 demostró que incluso los paquetes de confianza ampliamente usados no son inmunes.
La defensa: cooldowns de dependencias, es decir, rechazar instalar paquetes que se publicaron hace muy poco.
Configurar una antigüedad mínima de versión en .npmrc
A partir de npm 11.10.0 (febrero de 2026), puedes configurar min-release-age en tu archivo .npmrc:
min-release-age=7dEsto le dice a npm que rechace cualquier paquete publicado hace menos de 7 días. La lógica es simple: si una actualización de paquete contiene malware, lo más probable es que la comunidad lo detecte y lo elimine en pocos días. Esperar una semana da tiempo a los investigadores de seguridad a marcar releases maliciosas.
Usar cooldown con npm-check-updates
ncu v20+ detecta automáticamente la configuración de cooldown de la configuración de tu gestor de paquetes:
- npm: lee
min-release-agede.npmrc - pnpm: lee
minimumReleaseAgede.npmrc - Yarn Berry: lee
npmMinimalAgeGatede.yarnrc.yml
También puedes configurarlo directamente con ncu:
ncu --cooldown 7Esto omite cualquier paquete publicado hace menos de 7 días al comprobar actualizaciones.
npm v12 llega en julio de 2026
Grandes cambios de seguridad están aterrizando en npm v12. Por defecto, los scripts de instalación de las dependencias no se ejecutarán sin aprobación explícita. Otros valores por defecto son --allow-git: none y --allow-remote: none. Para prepararte:
- Ejecuta
npm approve-scriptspara autorizar los paquetes de confianza ahora - Ejecuta
npm deny-scriptspara bloquear explícitamente los sospechosos - Prueba tus pipelines de CI/CD con estas restricciones antes de que v12 aterrice
Estos cambios detienen un vector de ataque común en el que paquetes maliciosos ejecutan código arbitrario durante npm install.
Protege tus proyectos ahora
Incluso antes de npm v12, puedes dar estos pasos hoy:
- Añade
min-release-age=7da tu.npmrc - Usa
ncu --cooldown 7al comprobar actualizaciones - Ejecuta
npm auditregularmente para detectar vulnerabilidades conocidas - Configura actualizaciones automáticas de dependencias con Dependabot o Renovate (cubierto abajo)
Si estás desplegando apps de Node.js con Docker, mira nuestra guía de los principales comandos de Docker que necesitas conocer para mejores prácticas de seguridad en contenedores.
Ejecutar auditorías de seguridad con npm audit
Después de actualizar dependencias, ejecuta siempre una auditoría de seguridad:
npm auditEsto comprueba tus paquetes instalados contra la base de datos de avisos de seguridad de npm e informa de vulnerabilidades conocidas. La salida incluye el nivel de severidad (baja, moderada, alta, crítica), el paquete afectado, y la ruta a través de tu árbol de dependencias.
Para corregir vulnerabilidades automáticamente:
# Corregir dentro de rangos semver (seguro)
npm audit fix
# Corregir con subidas de versión major (puede romper cosas)
npm audit fix --forceLimitaciones de npm audit
npm audit tiene un problema de relación señal-ruido. A menudo marca vulnerabilidades en dependencias transitivas (paquetes de los que dependen tus paquetes) que en realidad no afectan a tu runtime. Un hallazgo de auditoría de “severidad alta” en un paquete solo de desarrollo que corre únicamente durante los tests es distinto de uno en tu ruta de dependencias de producción.
Usa npm audit --omit=dev para centrarte en las dependencias de producción. No entres en pánico por cada hallazgo de auditoría. Evalúa si la ruta de código vulnerable se usa realmente en tu proyecto.
Automatizar las actualizaciones de dependencias con Dependabot y Renovate
Las actualizaciones manuales funcionan para proyectos pequeños. Para cualquier cosa con CI/CD, automatízalo.
Dependabot
El bot de actualización de dependencias integrado de GitHub. Configúralo en .github/dependabot.yml:
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
reviewers:
- "your-github-username"Dependabot crea pull requests automáticamente cuando hay nuevas versiones disponibles. Es gratis para todos los repositorios de GitHub y requiere cero infraestructura.
Renovate
Open source, autoalojable, y mucho más configurable. Ventajas sobre Dependabot:
- Agrupación: Combina múltiples actualizaciones relacionadas en una sola PR (p. ej., todos los paquetes
@types/*) - Automerge: Auto-fusiona actualizaciones patch que pasan CI
- Horarios: Ejecuta actualizaciones solo en horario laboral
- Reglas personalizadas: Coincidencia de paquetes por patrón, tipo de versión, o fuente
Se configura vía renovate.json en la raíz de tu repo:
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:base"],
"packageRules": [
{
"matchUpdateTypes": ["patch"],
"automerge": true
},
{
"matchPackagePatterns": ["@types/*"],
"groupName": "type definitions"
}
]
}Usa Dependabot si estás en GitHub y quieres algo que funcione con cero configuración. Usa Renovate si necesitas agrupación, automerge, o un control más fino sobre el comportamiento de las actualizaciones.
Buenas prácticas para actualizar dependencias de Node.js de forma segura
Usa una estrategia de actualización por etapas
No actualices todo de golpe. Trabaja por etapas:
- Crea una rama:
git checkout -b deps-update - Actualiza primero las versiones patch:
ncu --target patch -u && npm install && npm test - Actualiza las versiones minor:
ncu --target minor -u && npm install && npm test - Maneja las versiones major individualmente:
ncu --doctor -u - Commitea y fusiona
Esto aísla los problemas. Si algo se rompe, sabes que está en la etapa más reciente.
Crear un archivo de configuración .ncurc
Guarda la configuración de ncu específica del proyecto en .ncurc.json:
{
"reject": ["mongoose", "sequelize"],
"target": "minor",
"upgrade": true
}Esto mantiene ciertos paquetes fijados (quizá sabes que tienen breaking changes) y establece un nivel de actualización por defecto. Ejecuta ncu sin flags y leerá esta configuración automáticamente.
Gestionar conflictos de peer dependencies
Cuando los paquetes requieren versiones específicas de dependencias compartidas, surgen conflictos:
# Comprobar problemas de peer dependencies
ncu --peerSi te encuentras errores de peer dependencies después de actualizar, prueba:
npm install --legacy-peer-depsEsto le dice a npm que use la resolución de dependencias antigua, más permisiva. Es un workaround, no una solución, pero te desbloquea mientras resuelves el conflicto.
Para una solución más permanente, usa el campo overrides en package.json para forzar versiones específicas:
{
"overrides": {
"some-transitive-dependency": "^2.0.0"
}
}Consejos generales de flujo de trabajo
- Trabaja siempre en una rama git al actualizar dependencias
- Actualiza con frecuencia, semanal o mensualmente, para evitar acumular deuda
- Lee los changelogs de las actualizaciones de versión major antes de aplicarlas
- Fija versiones exactas en producción, usa rangos para herramientas de desarrollo
- Configura CI para ejecutar tests en las PRs de actualización de dependencias
- Usa
min-release-ageen .npmrc para protección de la cadena de suministro
Asegúrate de que tu flujo de trabajo git sea sólido. Vincular GitHub con SSH hace que pushear ramas y revisar PRs no tenga fricción.
Conclusión
Actualizar dependencias de Node.js no tiene por qué dar miedo. El flujo de trabajo es directo:
- Comprueba qué está desactualizado con
ncu - Actualiza por etapas (patch → minor → major)
- Prueba después de cada etapa
- Commitea y fusiona
Lo que ha cambiado desde que se publicó este artículo por primera vez es el entorno de seguridad. Los ataques a la cadena de suministro son reales y van en aumento. Configurar cooldowns de dependencias, ejecutar npm audit, y montar actualizaciones automatizadas con Dependabot o Renovate ya no son buenas prácticas opcionales. Son higiene básica.
Empieza añadiendo min-release-age=7d a tu .npmrc hoy. Configura una programación semanal de Dependabot. Usa el modo doctor cuando necesites abordar saltos de versión major.


