Hilo 2 - con Prolog y complementos

Yarn, el administrador de paquetes para el nodo, lanzó la segunda versión . Y, al parecer, los chicos se propusieron seriamente cambiar el status quo en el ecosistema de nodos, o incluso los administradores de paquetes en general. Elimine todas las imágenes sobre gigabyte Nurse node_modules, elimine yarn installde los scripts CI, comenzamos otra gran confusión de JavaScript. En breve:

  • El modo Plug'n'Play se convirtió en predeterminado, y node_modules se convirtió en secundario, a través del complemento.
  • Creamos un plugin y un flujo de trabajo para monorep; tal vez no sea necesario lerna.
  • Construyeron en su mini-shell para que los scripts del paquete se puedan ejecutar sin estos de sus cross-envs en Windows.
  • Se agregó un prólogo para verificar las reglas entre espacios de trabajo.
  • NPX volvió a lavar sus.
Si no desea actualizar todos sus proyectos, simplemente ejecute yarn policies set-version ^1(consulte legacy.yarnpkg.com/en/docs/cli/policies ) en los repositorios que deberían permanecer en Yarn 1 y confirme el resultado. Luego, Yarn usará los binarios locales de Yarn 1 en lugar de los globales, por lo que todos en el equipo usarán la misma versión.


En general, se pueden rastrear dos direcciones de desarrollo: a) máxima reproducibilidad del medio ambiente yb) movimiento hacia una plataforma para la gestión de paquetes.

Con respecto al primer punto, el hilo siempre condujo; de hecho, esta fue la razón por la que apareció una vez, presionando inmediatamente npm (recuerdo, luego ejecutar npm install podría dar diferentes resultados, porque el archivo de bloqueo en el mundo de nodo es el mérito del hilo) . Aunque personalmente cambié a él debido a la línea furiosa en los registros npm .

Pero ahora decidieron, por así decirlo, llevar al límite. Cuando agrega un paquete, éste (y todas sus dependencias), en forma de archivo zip, se agrega al caché, en la carpeta .yarn en la carpeta del paquete (como .git). En lugar de node_modules, se crea un archivo .pnp.js, que procesa las importaciones de módulos. Hay dos consecuencias importantes:

  1. Puede agregar este caché directamente a git, y luego, después del pago, tendrá inmediatamente la versión actual de la aplicación con todas las dependencias.
  2. El enlace de hilo funciona mucho mejor: ahora las dependencias entre pares también se procesan correctamente

En cuanto a la plataforma, los chicos cambiaron a la arquitectura de complementos (es decir, hilo principalmente como API, y luego como CLI) e incluso anunciaron que quieren deshacerse del nodo en sí, convirtiendo a hilo en una solución genérica para construir sus propios administradores de paquetes .

Suena interesante, ambicioso y un poco arrogante. Veamos si pueden hacer frente o detenerse ya en la primera etapa de PnP.

En cualquier caso, intentaré transferir nuestro proyecto al hilo 2, si funciona, será bueno. ¿Cómo estás?

UPD: Acerca del prólogo en el título no es una broma, será posible escribir las reglas para verificar los espacios de trabajo en él, next.yarnpkg.com/features/constraints

Siguiente: un extracto del anuncio oficial .

El más importante


Salida en la consola rediseñada para una mejor legibilidad
Comandos de la CLI ( yarn add...) Ahora considere vorkspeysy
Puede deshacerse yarn installdentro de su repositorio
de alternativas menos peligrosas npx:, yarn dlxpara ejecutar un
comando Ejecutar cosas únicas en todas las vorkspeysah con yarn workspaces foreach
paquetes Mankipatching a través del registro de parches:
Enlaces a paquetes locales a través del protocolo del portal:
un nuevo flujo de trabajo para liberar espacios de trabajo normalmente
Comprobación declarativa y correcciones de espacio de trabajo (PROLOG INCLUIDO)

Y también ...


Los paquetes se construyen solamente si no hay esto, absolutamente nada en absoluto
paquete construye se puede activar / desactivar
secuencias de comandos se ejecutan en la cáscara universal de
las dependencias de pares funcionan incluso a través de un enlace de hilo
archivo de bloqueo ha convertido en algo normal YAML
código Todo está ahora en texto mecanografiado
Plug-in de apoyo

Rompiendo cambios


La configuración se ha vuelto uniforme. Los
paquetes deben cumplir con sus límites. Las
dependencias de los
paquetes ya no son compatibles. Los paquetes se almacenan en archivos de solo lectura.

El registro de cambios detallado está aquí , las instrucciones de actualización están aquí .

¿Será difícil pasar a Yarn 2?


Gracias a nuestros beta testers y al soporte general del ecosistema, hemos aliviado mucho el dolor asociado con una actualización tan masiva. La guía de reubicación contará con más detalle, pero en general, mientras usa las últimas versiones de herramientas (ESLint, Babel, TypeScript, Gatsby, etc.), todo debería ser normal.

Pero hay un problema importante: Flow and React-Native no se puede usar con Plug'n'Play (PnP) en este momento . Estamos buscando formas de trabajar con sus equipos para que funcione. En este momento, puede permanecer en Yarn 1 o usar el complemento node_modules , que proporciona compatibilidad con versiones anteriores para facilitar la transición (todavía está en funcionamiento, puede haber errores). Más aquí .

¿Qué pasará con la versión anterior?


Yarn 1.22 se lanzará la próxima semana. Después de esto, la rama 1.x entrará oficialmente en modo en vivo, es decir, no habrá lanzamientos que no sean correcciones de vulnerabilidad. Las nuevas características se realizarán exclusivamente en Yarn 2. En la práctica, esto significa:

  • El antiguo repositorio (yarnpkg / yarn) dejará que yarnpkg / legacy refleje su estado de supervivencia. Estará abierto por algún tiempo, pero muy probablemente lo archivaremos en un año o dos.
  • El nuevo repositorio no cambiará su nombre a yarnpkg / yarn, ya que esto romperá muchos enlaces antiguos. En el futuro previsible, permanecerá en yarnpkg / berry .
  • El sitio anterior irá a legacy.yarnpkg.com, el nuevo sitio (ahora next.yarnpkg.com) se moverá al dominio principal yarnpkg.com
  • El paquete de hilo en npm se actualizará así:

    • La etiqueta berry siempre se mostrará en la última versión 2.x
    • legacy 1.x
    • latest legacy , berry. , Yarn 2.
  • - Node Yarn 2 Node 14, 2020 . yarnPath Yarn 2 .
  • Estamos cambiando a acciones GitHub completamente automáticas y algunos repositorios por lotes (en particular Homebrew, Chocolatey, etc.) aún no están atornillados. Como resultado, recibirán una actualización de Yarn 2 más tarde que el resto. Recomendamos utilizar la versión del conjunto de hilos (o la versión del conjunto de políticas de hilos en el hilo 1).

Esperamos que la mayoría de estos cambios se completen antes del 1 de febrero de 2020.

Source: https://habr.com/ru/post/undefined/


All Articles