Yarn: procedimiento para volver a implementar las dependencias de JavaScript en el servidor de producción (uso del archivo `yarn.lock`)

3 minutos de lectura

avatar de usuario
carro antes de caballo

He leído la documentación sobre Yarn y conozco el lock Se supone que el archivo está comprometido con VC. Ver este y que explica a alto nivel por qué es necesario el archivo de bloqueo, y este ¡que enumera un montón de comandos sin mucha explicación de lo que realmente hacen!

También he leído muchas preguntas en StackOverflow que preguntan si el lock El archivo debe estar comprometido con VC.

Sin embargo, toda la documentación y los subprocesos SO parecen pasar por alto el detalle que quiero saber, que es el siguiente; ¿Cuál es el procedimiento correcto (el grupo correcto de comandos para ejecutar) para:

  1. Actualizando el yarn.lock archivo cuando lo necesito (es decir, en el entorno de desarrollo donde quiero obtener las últimas versiones secundarias y actualizar el lock archivo para reflejar esto)
  2. Por mantener mi archivo de bloqueo sincronizado con otros desarrolladores para garantizar que estén desarrollando/probando desde exactamente las mismas versiones de dependencia, y
  3. Para actualizar/re-sincronizar el node_modules directorio en el servidor de producción (es decir, para asegurarse de que el servidor de producción no se esté ejecutando en una versión diferente/rompiendo de paquetes dependientes)

Pregunto en parte porque en el pasado mientras hacía un git pull en el servidor, he recibido mensajes que me dicen que el yarn.lock El archivo se ha actualizado independientemente del proceso de desarrollo/VC. En lo que a mí respecta, nunca se debe permitir que esto suceda.

  • Al especificar paquetes en el archivo package.json para agregar paquetes, siempre es una buena idea especificar el exact version del paquete a instalar. Este es el mecanismo para ayudarlo a mantener los paquetes correctos en todos los sistemas. es decir: yarn add [email protected] y sea más diligente al instalar versiones más nuevas del paquete para garantizar la compatibilidad con otros paquetes.

    – Sebastián Scholle

    4 sep 2018 a las 13:48

la siguiente información se basa en lo que usamos a diario en Orange, puede que no sea la única verdad.

1 ) Actualización yarn.lock

yarn upgrade [package | [email protected] | [email protected] | @scope/]... [--ignore-engines] [--pattern]

Este comando actualiza las dependencias a su última versión según el rango de versión especificado en el package.json expediente. los yarn.lock El archivo también se volverá a crear.

fuente : https://yarnpkg.com/en/docs/cli/upgrade

2) Dependencia entre desarrolladores

Lo que le sugiero que haga es crear un script que verifique la versión ‘recomendada’ actual con la ayuda de:

yarn check

Verifica que las versiones de las dependencias del paquete en el proyecto actual package.json coincida con los del archivo de bloqueo de yarn.

fuente : https://yarnpkg.com/en/docs/cli/check

3) Actualización de la producción del servidor

Lo mismo que 2) usando un script de git hook, debería ayudarlo a yarn check Si el package.json versión son correctas si no inicia una yarn update.

  1. Honestamente, esto es una cuestión de opinión/preferencia. He visto algunas estrategias:

    • Usando yarn upgrade
    • Subiendo manualmente la versión en package.json antes de correr yarn
  2. Como mencionó Fabien: use yarn check

  3. Puede usar espejos sin conexión de yarn donde envía cachés de sus paquetes npm al control de versiones. (Ver este artículo mediano)

    Además, hay muchas ventajas cuando se usa yarn --offline:

    • Las compilaciones son más rápidas porque no tiene que obtener paquetes del registro npm.
    • Sus compilaciones fallarán si no tiene las dependencias correctas.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad