Cómo actualizar todos los paquetes NPM a su última versión
Cuando instalas un nuevo paquete en tu proyecto a través del comando npm install <nombre-del-paquete>
la última versión del paquete se descarga dentro de la carpeta node_modules
y se agrega una nueva entrada dentro de los archivos package.json
y pacakge-lock.json
.
Así, si instalas por ejemplo el paquete static-server
, esta entrada se agregaría a tu archivo package.json
:
{
"dependencies": {
"static-server": "^2.2.1"
}
}
Y esta entrada a tu archivo package-lock.json
:
{
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"static-server": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/static-server/-/static-server-2.2.1.tgz",
"integrity": "sha512-j5eeW6higxYNmXMIT8iHjsdiViTpQDthg7o+SHsRtqdbxscdHqBHXwrXjHC8hL3F0Tsu34ApUpDkwzMBPBsrLw==",
"requires": {
"chalk": "^0.5.1",
"commander": "^2.3.0",
"file-size": "0.0.5",
"mime": "^1.2.11",
"opn": "^5.2.0"
}
}
}
}
Estos archivos nos dicen que la versión que tenemos instalada es la 2.2.1
así como también nos establecen las reglas para actualizar el paquete son ^2.2.1
, que según el sistema de versionado de npm significa que solo puedes actualizar parches menores y no versiones que rompan compatibilidad.
Es decir, se podría actualizar a la versión 2.2.2
o a la 2.3.0
pero no se podría actualizar a la 3.0.0
ya que esta última son cambios muy grandes que pueden causar problemas de compatibilidad.
Cuando utilizamos el comando npm update
solamente se actualizarán los cambios menores, si se consigue una versión superior esta será descargada y se modificará el archivo package-lock.json
, mientras que el archivo package.json
quedará inalterado.
Para chequear si existen nuevas versiones de las dependencias instaladas, basta con ejecutar el comando npm outdated
, esto arrojará un resultado similar al siguiente si ha pasado un buen tiempo desde la última vez que actualizaste las dependencias:
Algunas de esas nuevas versiones tienen cambios mayores, así que ejecutar npm update
no las actualizará. Este comportamiento es debido a que al ser cambios mayores, actualizar puede llegar a romper tu proyecto y npm
trata de evitarlo.
Para poder todas estas dependencias a su última versión, deberás instalar un paquete llamado npm-check-updates
de forma global:
npm install -g npm-check-updates
Una vez instalado deberás correr el siguiente comando:
ncu -u
Esto modificará tu archivo package.json
para que todas las dependencias estén listadas en sus últimas versiones.
Una vez completado este proceso, basta con ejecutar el siguiente comando para actualizar todas tus dependencias:
npm install
Recuerda hacer este tipo de actualizaciones con cuidado ya que algunos de los cambios mayores puede llegar a romper tu proyecto.