Yarn en Profundidad: Por qué y Cómo

Rate this content
Bookmark

Desde 2017, Yarn se ha consolidado como un pilar del desarrollo de JavaScript, incubando numerosas características en las que nuestro ecosistema ahora depende en gran medida. A medida que pasaron los años y los competidores mejoraron, también lo hizo Yarn, y ahora es el momento de adentrarnos en las características y compensaciones que hacen de Yarn una verdadera joya única en el ecosistema de JavaScript.

FAQ

Yarn es un gestor de paquetes para JavaScript, diseñado también para ser un gestor de proyectos. Permite la administración de scripts, la división de aplicaciones en módulos independientes, la gestión de ciclos de lanzamiento y la aplicación de estándares de monorepo, entre otras características.

Los valores fundamentales de Yarn incluyen la colaboración comunitaria y la solidez del código. Yarn enfatiza la importancia de una comunidad activa de colaboradores y asegura que su aplicación funcione correctamente sin hacer suposiciones no controladas.

Yarn ha evolucionado de ser simplemente un gestor de paquetes a ser un gestor de proyectos integral. Introdujo nuevas características como los espacios de trabajo y pasó de usar Webpack a ESBuild para mejorar su funcionamiento. Además, ha aumentado su estabilidad y confiabilidad a lo largo del tiempo.

Yarn soluciona problemas como la gestión de dependencias cruzadas en múltiples espacios de trabajo, asegura la consistencia de las versiones y configuraciones, y permite la ejecución eficiente de scripts en diferentes espacios de trabajo simultáneamente.

Yarn ofrece ventajas como la gestión avanzada de proyectos, la posibilidad de manejar grandes monorepos, una configuración de caché que permite instalaciones más rápidas y la capacidad de escribir y probar características de forma independiente antes de su integración.

Yarn contribuye a la comunidad no solo ofreciendo una herramienta robusta y confiable, sino también mejorando el ecosistema de JavaScript mediante pruebas automatizadas de proyectos populares y trabajando activamente para mantener compatibilidad y estabilidad.

El futuro de Yarn incluye mejoras continuas con nuevas versiones que ofrecerán características adicionales y mejoradas. También se está explorando la posibilidad de hacer de Yarn un gestor de paquetes más universal que pueda manejar diferentes lenguajes de programación.

Maël Nison
Maël Nison
34 min
09 Jun, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Yarn es un gestor de paquetes y gestor de proyectos que prioriza la solidez y confiabilidad. Ofrece flujos de trabajo y características como instalaciones sin dependencias y alineación de espacios de trabajo. El éxito de Yarn radica en su infraestructura y gemas ocultas. Tiene una arquitectura modular y está comprometido con el ecosistema. Yarn enfatiza la corrección y es más adecuado para aquellos que lo valoran.

Available in English: Yarn in Depth: Why & How

1. Introduction to Yarn

Short description:

Yarn es un gestor de paquetes para JavaScript, pero en realidad es más que eso. Está diseñado para ser un gestor de proyectos que te permite administrar scripts, dividir tu aplicación en modelos independientes, gestionar ciclos de lanzamiento, monitorear el uso de scripts y aplicar estándares de monorepo. Yarn valora la contribución de la comunidad y depende de sus colaboradores para hacer que el proyecto sea sostenible. Prioriza la solidez y garantiza que los problemas en tu aplicación no sean pasados por alto. Yarn tiene como objetivo proporcionar un entorno de desarrollo confiable y seguro.

Hola a todos, para aquellos que no me conocen, mi nombre es Maer. Actualmente trabajo en Datadog, una empresa centrada en la monitorización en la nube, y he estado liderando el desarrollo de Yarn durante algunos años. Hoy vamos a hablar extensamente sobre qué es Yarn y qué puede ofrecerte. Espero que al final de esta charla tengas una mejor idea de lo que hace que este proyecto sea único en nuestro ecosistema. Entonces, si le preguntas a alguien, probablemente te dirán que Yarn es un gestor de paquetes para JavaScript y estarían en lo correcto. Pero eso es solo parte de la historia. Yarn no es solo un gestor de paquetes, está diseñado para ser un gestor de proyectos. Y de hecho, si lo piensas, Yarn te permite administrar scripts. Te permite dividir tu aplicación en modelos independientes. Como veremos más adelante, también gestionará tus ciclos de lanzamiento, monitoreará el uso de scripts e incluso aplicará estándares de monorepo. Todas estas tareas van mucho más allá del típico gestor de paquetes y cada versión que lanzamos empuja aún más los límites. Entonces, es un gestor de proyectos que suena bien, pero ¿cómo se traduce en la práctica? ¿Cuáles son las cosas que buscamos cuando fusionamos pares que dan al proyecto lo que es? Discutamos los valores fundamentales. Entonces, lo primero que hay que darse cuenta es que somos una comunidad de colaboradores. El código abierto es un entorno muy exigente y la mayoría de los proyectos tienen dificultades para encontrar formas de hacer que su trabajo sea sostenible. Yarn no es una excepción. Para ayudar un poco, confiamos mucho en nuestros colaboradores para que sean los cambios que quieren ver, para contribuir de vuelta al proyecto que les gusta. En la práctica, esto significa que nuestro equipo principal dedica tanto tiempo a trabajar en nuestra infraestructura como en el propio producto. Recientemente, pasamos de Webpack a ESBuild para facilitar la construcción de Yarn. Varios comentarios te permiten construir parte de los binarios de Yarn a partir de fuentes. Así que puedes probar fácilmente características independientes. Incluso puedes escribirlas tú mismo y comenzar a usarlas en tu proyecto sin tener que esperar a que se fusionen. Yarn se trata de hacer posible que experimentes mucho más allá de lo que podríamos ofrecerte por nosotros mismos. El segundo valor muy importante que siempre tenemos en cuenta al desarrollar en Yarn es la solidez. Yarn debe decirte si algo está mal en tu aplicación. No debe pasarlo por alto. No debe hacer suposiciones no controladas. Esto puede sonar un poco rígido y es la razón por la que tienes tantos problemas con x depende de y sin listar sus dependencias, pero es realmente crítico. Porque ya sea que modifiques aplicaciones o bibliotecas, necesitas tener confianza en que algo que funciona ahora también funcionará en producción o cuando sea instalado por tus clientes. Si algo necesita romperse, entonces debe romperse temprano para que no lo encuentres más adelante cuando estés

2. Yarn's Impact and Workflows

Short description:

El panorama de JavaScript es amplio y rápido. Yarn, como gestor de paquetes, tiene como objetivo guiar a los usuarios y ayudarles a comprender las herramientas que están utilizando. Yarn prioriza la experiencia del desarrollador y tiene como objetivo hacer lo correcto por defecto. Elimina la necesidad de validación manual de la instalación del proyecto. El impacto de Yarn se puede ver a través de historias de proyectos que lo han adoptado, incluido el propio repositorio de Yarn. El equipo de Yarn utiliza activamente todas las características integradas en el núcleo, lo que ha influido positivamente en su trabajo. Yarn también proporciona flujos de trabajo, como ciclos de lanzamiento, para mejorar los procesos de desarrollo.

no está preparado para ello. Buenas prácticas. El panorama de JavaScript es amplio, cambia rápidamente y cuenta con muchas personas con opiniones. Como gestor de paquetes, estamos en una posición única para ayudar a nuestros usuarios a comprender las herramientas que están utilizando y guiarlos por el camino correcto. No solo usar Yarn debería resolver una necesidad práctica, también debería contribuir a que aprendas y te conviertas en un mejor ingeniero en el proceso. Llegamos al último en este conjunto, la experiencia del desarrollador, haciendo lo correcto por defecto. Veamos un ejemplo. En Yarn 1, había un comentario llamado Yarn Check. Validaba que el proyecto estuviera instalado correctamente. Como resultado, varias empresas tenían una política de llamar a Yarn Check después de cada instalación, solo para asegurarse de que todo estuviera bien. Eliminamos este comentario de Yarn 2, ¿puedes adivinar por qué? La cosa es que Yarn debería hacer y ya hace lo correcto por defecto. No deberías tener que validar que tu proyecto esté instalado correctamente, porque debería estar correctamente instalado desde el principio. Así que hemos visto un poco de lo que Yarn pretende ser. Hablemos un poco de DevOps. ¿Qué puede hacer Yarn por ti, en términos prácticos? Vamos a repasar dos historias interesantes de proyectos que lo adoptaron. Uno es un proyecto de código abierto web del que es posible que hayas oído hablar. El otro es una aplicación interna. Sin sorpresa, el primero es Yarn en sí mismo. Antes de sumergirnos, déjame contarte una historia divertida. En Yarn 1, en realidad no usábamos espacios de trabajo para desarrollar Yarn, y fue un problema real porque no solo los errores estaban ocultos para nosotros, sino que tampoco nos enfrentábamos directamente al valor de algunas características importantes. Por ejemplo, cuando usas espacios de trabajo, es muy evidente que necesitas poder ejecutar un script en todos tus espacios de trabajo a la vez. Sin embargo, como no usábamos esos espacios de trabajo nosotros mismos, no parecía ser un gran problema en ese momento, y por lo tanto, la característica tardó mucho tiempo en llegar. Hoy en día, tenemos una regla interna de que el equipo de Yarn debe utilizar todas las características integradas en el núcleo, y creo que eso tiene un impacto positivo en el trabajo que hemos realizado hasta ahora. Esta es una de las razones por las que el repositorio de Yarn es tan importante para nosotros, porque es donde experimentamos con muchas características, no todas ellas utilizadas por nuestros propios usuarios. De todos modos, hablemos de flujos de trabajo. El primero son los ciclos de lanzamiento. Nuestro proceso anterior era muy sencillo. Teníamos un archivo en la raíz del repositorio, y se esperaba que cada PR tuviera una línea en él. Funcionaba bien, pero después de cambiar a un repositorio de modelo, no habría escalado muy bien, ya que necesitábamos la capacidad de lanzar cada flujo de trabajo por separado. Así que desarrollamos el flujo de trabajo de lanzamiento. La idea es que con cada PR que fusionamos, debe incluir un pequeño archivo creado por Yarn que enumera todos los espacios de trabajo que han sido modificados por el PR y si necesitarán formar parte del próximo lanzamiento, y si será una versión menor, una corrección o una versión mayor. Nuestro CI validará que este archivo exista y su contenido, y en el momento del lanzamiento solo necesitamos decirle a Yarn que agregue todos los archivos de versión actualmente verificados dentro del repositorio en paquetes y generación de registros de cambios del paquete.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

pnpm: un gestor de paquetes rápido y eficiente para JavaScript
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
pnpm: un gestor de paquetes rápido y eficiente para JavaScript
Aprenderás sobre uno de los gestores de paquetes más populares para JavaScript y sus ventajas sobre npm y Yarn.Una breve historia de los gestores de paquetes de JavaScriptLa estructura aislada de node_modules creada por pnpmQué hace que pnpm sea tan rápidoQué hace que pnpm sea eficiente en el uso del espacio en discoSoporte para monoreposGestión de versiones de Node.js con pnpm
La filosofía de Yarn
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
La filosofía de Yarn
En los últimos años, Yarn se ha convertido en una de las herramientas más comunes utilizadas para desarrollar proyectos de JavaScript, en gran parte gracias a un conjunto de principios rectores. Pero, ¿cuáles son? ¿Cómo se aplican en la práctica a Yarn? Y, lo que es igual de importante, ¿cómo te benefician a ti y a tus proyectos?
En esta charla no nos adentraremos en pruebas de rendimiento o conjuntos de características: en su lugar, aprenderás cómo abordamos el desarrollo de Yarn, cómo exploramos nuevos caminos, cómo mantenemos nuestro código saludable y, en general, por qué creemos que Yarn se mantendrá firmemente establecido en nuestro ecosistema en los próximos años.
Yarn 4 - Gestión Moderna de Paquetes
JSNation 2022JSNation 2022
28 min
Yarn 4 - Gestión Moderna de Paquetes
Top Content
Yarn 4 es la próxima versión mayor de tu gestor de paquetes JavaScript favorito, con un enfoque en rendimiento, seguridad y experiencia del desarrollador. A lo largo de esta charla repasaremos sus nuevas características, cambios importantes y compartiremos nuestros planes a largo plazo para el proyecto.Si solo has oído hablar de Yarn sin probarlo aún, si no estás seguro de por qué la gente hace tanto alboroto con los gestores de paquetes, si te preguntas cómo tu gestor de paquetes puede hacer tu trabajo más sencillo y seguro, ¡esta es la charla perfecta para ti!
Controles de seguridad en la cadena de suministro de JavaScript
JSNation 2022JSNation 2022
28 min
Controles de seguridad en la cadena de suministro de JavaScript
La omnipresencia del software de código abierto y la baja barrera de entrada en npmjs están sirviendo como catalizador para los incidentes de seguridad en la cadena de suministro que están impactando continuamente a los desarrolladores de JavaScript. ¿Qué podemos hacer para protegernos?
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
React Advanced Conference 2021React Advanced Conference 2021
21 min
Vite - La Herramienta de Desarrollo Frontend de Próxima Generación
¿Cómo construiremos aplicaciones web en el futuro? Aprendamos cómo esbuild y los bundlers como Vite, construidos sobre él, funcionan para ver cómo pueden acelerar nuestros flujos de trabajo de desarrollo.
Domando el Dragón de la Gestión de Estado
React Summit US 2023React Summit US 2023
23 min
Domando el Dragón de la Gestión de Estado
Pasamos mucho tiempo discutiendo qué biblioteca de estado deberíamos usar, y es justo. Hay bastantes, desde la común que todos usan y aman odiar, hasta esa alternativa peculiar, hasta varios recién llegados. Sin embargo, discutir cuál biblioteca es la mejor pone el carro antes que el caballo.

Al averiguar cómo manejar el estado, primero deberíamos preguntarnos: ¿qué diferentes categorías de estado necesitamos? ¿Cuáles son las restricciones de cada categoría? ¿Cómo se relacionan entre sí? ¿Cómo se relacionan con el mundo exterior? ¿Cómo evitamos que se conviertan en una gigantesca y frágil bola de hilo? Y más.

Esto puede sonar abrumador, ¡pero no temas! En esta charla, te guiaré sobre cómo responder estas preguntas y cómo elaborar un sistema de estado accesible, mantenible y escalable. Y sí, también hablaré sobre cómo elegir una biblioteca de gestión de estado.