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.

This talk has been presented at JSNation Live 2021, check out the latest edition of this JavaScript Conference.

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
pnpm is a fast and efficient package manager that gained popularity in 2021 and is used by big tech companies like Microsoft and TikTok. It has a unique isolated node module structure that prevents package conflicts and ensures each project only has access to its own dependencies. pnpm also offers superior monorepo support with its node module structure. It solves the disk space usage issue by using a content addressable storage, reducing disk space consumption. pnpm is incredibly fast due to its installation process and deterministic node module structure. It also allows file linking using hardlinks instead of symlinks.
La filosofía de Yarn
DevOps.js Conf 2022DevOps.js Conf 2022
31 min
La filosofía de Yarn
Let's talk about React and TypeScript, Yarn's philosophy and long-term relevance, stability and error handling in Yarn, Yarn's behavior and open source sustainability, investing in maintenance and future contributors, contributing to the JavaScript ecosystem, open-source contribution experience, maintaining naming consistency in large projects, version consistency and strictness in Yarn, and Yarn 4 experiments for performance improvement.
Yarn 4 - Gestión Moderna de Paquetes
JSNation 2022JSNation 2022
28 min
Yarn 4 - Gestión Moderna de Paquetes
Top Content
Yarn is a package manager that focuses on stability, performance, and security. It offers unique features like plug and play installation, support for nonmodules, and the exec protocol. Yarn is committed to being a good citizen in the open-source community and contributes to fixing dependencies. It is part of the Node.js Loader's working group and advocates for Corepack. Yarn is still experimental but is improving its user experience and security features. Contributions are welcome, and switching to Yarn can improve performance in large projects.
Comprendiendo la Resolución de Paquetes en Node.js
Node Congress 2024Node Congress 2024
11 min
Comprendiendo la Resolución de Paquetes en Node.js
In this Talk, the speaker discusses package resolution in Node.js, covering topics such as CommonJS, ES modules, package.json structure, and package.json loader. The Talk also touches on conditional loading and file extension resolution, module import and export, module type determination based on file extensions and package.json, module resolution strategies in Node.js, and tips for improving loading time in ESM applications.
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
This talk discusses the security challenges in the JavaScript ecosystem, including supply chain security, lock file tampering, and arbitrary command execution. It highlights the risks of blind upgrades and hidden comments in code. The talk also covers dependency confusion attacks and the importance of establishing a threat model for node applications.
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
This Talk discusses various aspects of state management in software development. It covers different types of state, such as bootstrap data, lazily loaded data, and reactive data. The Talk also explores the concept of locality in state management, including local, global, and regional state. It introduces libraries like Recoil and Jotai that challenge the single global store concept and provide better locality. The Talk emphasizes the importance of setting up state management systems for success and creating reliable systems to focus on user satisfaction.