¿Un buen flujo de trabajo de Node.js para mantener los paquetes actualizados?

8

Recientemente comencé a desarrollar un proyecto en Node.js. Por supuesto, en este momento los paquetes que estoy usando están bastante actualizados ya que estoy comenzando de nuevo y usando la última versión, pero hay una tasa de rotación de versiones bastante alta para la mayoría de los paquetes de Node.js y, a menudo, ciertas características serán en desuso o descartado, y por supuesto las vulnerabilidades de seguridad serán reparadas.

Como la mayoría de mis paquetes se especifican utilizando la sintaxis de versiones semánticas ^1.2.3(se adhieren al número de versión principal dado para evitar cambios importantes), se perderán todas las actualizaciones importantes más allá de la versión principal actual.

¿Cuál es una forma prudente de garantizar que se mantenga razonablemente actualizado con sus dependencias? ¿Es necesario poner, por ejemplo, una verificación semanal de actualizaciones de sus dependencias en su flujo de trabajo para asegurarse de no quedarse atrás? Y por esta razón, ¿sería una buena idea tratar de minimizar las dependencias para minimizar el dolor de lidiar con cambios importantes cuando necesariamente actualiza a las versiones principales más nuevas?

Jez
fuente
1. Conozca la actualización de un paquete. 2. Evalúe los cambios realizados en la actualización. 3. Decida si los cambios son útiles y relevantes para su proyecto. Si lo son, entonces 4. Actualice el paquete a la nueva versión.
Robert Harvey
@Robert Harvey. Mi proyecto de nodo simple utiliza aproximadamente una docena de paquetes principales directamente, posiblemente con un centenar indirectamente. Tu enfoque no escala. Esta es una buena pregunta para verificar si hay una manera más fácil y más automatizada.
user949300
1
@Jez, ¿has mirado npm-check-updates o el npm outdatedcomando? Nunca lo usé yo mismo, pero parecen un comienzo.
user949300
Si está utilizando GitHub, es posible que desee probar algo como Greenkeeper, que ejecutará sus pruebas contra las nuevas versiones de sus dependencias.
Whymarrh

Respuestas:

6

Este es el flujo de trabajo que utilizo actualmente para un proyecto con lanzamientos mensuales.

  • Después del lanzamiento, revise las dependencias y actualice las que solo tienen cambios menores y actualizaciones de parches. Dado que npm sigue a las versiones semánticas, si los autores de los paquetes hicieron bien su trabajo, esto no debería dañar su sistema.
  • Realice una prueba de humo y, si se rompe alguna dependencia, cree una tarea para el desarrollo para actualizar esa dependencia. Podría ser un boleto, podría ser una tarea para su sprint, etc. El punto es que actualizarlos no es inmediato y requerirá trabajo, por lo que debe programarlo. Cualquier comentario de su primer intento será de ayuda.
  • Programe tareas para actualizar dependencias que tengan cambios importantes.
  • Congele sus dependencias a las versiones más recientes.

El objetivo no es tener actualizaciones automáticas en absoluto. Es posible que rompan su sistema de una manera inesperada y muy probable cuando realiza otros cambios, lo que no ayudará a determinar cuál es el problema.

La actualización de las dependencias debe ser un proceso consciente, y si alguna de ellas interrumpe su sistema, debe saber cuál.

Las actualizaciones menores que se rompen y pasan desapercibidas probablemente se recogerán en su sprint de desarrollo o prueba, y es por eso que lo hace después del lanzamiento, porque desea tanto tiempo para detectarlo y reaccionar a ese problema antes de lanzarlo.

Tenga en cuenta que en realidad uso este proceso en un proyecto de dependencias .NET + Nuget, pero se aplica más o menos a Node y npm / bower, Rails + bundle, etc.

Finalmente, puede utilizar comandos agradables que lo ayudarán a congelar / descongelar dependencias, incluso agregándolos a su repositorio. Ver npm shrinkwrap.

Alfa
fuente
0

Utilizo otra solución con un enfoque diferente https://uptodatenpm.com, le envía un boletín semanal con información de las nuevas versiones de las dependencias de su proyecto para que pueda decidir qué departamentos actualizar.

Eric Ros
fuente