Al trabajar en un proyecto con Node generalmente se instala la última versión de los paquetes necesarios. A medida que pasa el tiempo van saliendo nuevas versiones de estos con nuevas funcionalidades, soluciones de errores y parches de seguridad. Pero, si no hacemos nada, las versiones del archivo package.json
no se actualizan. Algo que, en el peor de los casos, puede exponer los desarrollos debido a fallos de seguridad conocidos que pueden ser explotados. Para solucionar este problema y actualizar las dependencias de Node a la última versión se puede recurrir al paquete npm-check-updates
.
Instalación de npm-check-updates
El paquete npm-check-updates
permite actualizar las dependencias de cualquier proyecto, por lo que es aconsejable instalarlo como una dependencia global, nunca como una dependencia de un proyecto. Para lo que, como es habitual, se usará el comando npm
con la opción -g
npm install npm-check-updates -g
Comando que en el caso de Linux y macOS ha de venir precedido de sudo
. Una vez hecho esto ya tendremos el paquete instalado y podremos acceder al mismo mediante el comando ncu
.
Comprobando y actualizando las dependencias de un proyecto Node
Tras la instalación del paquete en nuestro sistema podemos ir a cualquier proyecto y ejecutar el comando ncu
. Por ejemplo, podemos descargar el proyecto jslane
(código que se puede descargar desde GitHub) para ver los paquetes que requieren actualización.
En este ejemplo, con la versión del proyecto a fecha de publicación, existen cinco paquetes que pueden ser actualizados. Indicando la versión actual y la última disponible. Empleando además un código de colores diferente para los parches (verde), las versiones menores (azul) y las mayores (rojo). Algo que ayuda a decir si actualizar o no en función de que la nueva versión pueda tener cambios que no sean compatibles (las versiones mayores).
Actualizar las versiones a la última
En la sección anterior se ha obtenido el listado de paquetes, pero no se ha modificado el listado de archivos package.json
. Aunque la actualización se puede hacer manualmente, esto también lo puede hacer automáticamente el comando ncu
. Facilitando de este modo las tareas de mantenimiento. En el caso de que queramos actualizar todas las dependencias simplemente hay que lanzar el comando con la opción -u
ncu -u
Pero, en el caso de que solamente se deseen instalar los parches o las versiones menores esto se puede indicar con el comando --target
seguido de algunas de las opciones ( patch
, minor
, o latest
) con las que se indica el tipo de actualización. Por ejemplo, si queremos actualizar los paquetes a la última versión menor de la versión actual debemos escribir el comando
ncu -u --target minor
Finalmente, si se desea un mayor control sobre los paquetes a actualizar, es mejor usar el modo interactivo en el que preguntará uno a uno que paquetes se van a actualizar. Modo al que se accede mediante la opción -i
.
ncu -i
Una vez hecho esto se actualizará la lista de dependencias en el archivo package.json
, pero no los paquetes. Lo que se tiene que hacer mediante npm
con el comando install
npm install
Actualizar los paquetes globales
También es posible actualizar el listado de paquetes globales. Lo que se puede hacer usando el parámetro -g
en el comando ncu
.
ncu -g
En el caso de que existan paquetes globales que requieran actualización ncu
creará un comando con el que realizar la tarea. Solamente hay que copiar este y ejecutarlo en la terminal (precediendo este de sudo
tanto en Linux como macOS).
Conclusiones
En esta entrada hemos visto un paquete de Node gracias al cual es posible actualizar las dependencias de Node a la última versión de forma automática. Algo que nos puede evitar problemas debido a fallos de seguridad conocidos de paquetes que pueden ser utilizados para atacar nuestros proyectos.