Yarn en Profundidad: Por qué y Cómo

This ad is not shown to multipass and full ticket holders
React Summit
React Summit 2025
June 13 - 17, 2025
Amsterdam & Online
The biggest React conference worldwide
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit 2025
React Summit 2025
June 13 - 17, 2025. Amsterdam & Online
Learn more
Bookmark
Rate this content

Desde 2017, Yarn se ha convertido en 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 DevOps.js Conf 2021, check out the latest edition of this JavaScript Conference.

FAQ

Yarn es un gestor de paquetes para JavaScript que también aspira a ser un gestor de proyectos y un sistema de ejecución. Tiene como objetivo facilitar la administración de scripts, la división de aplicaciones en módulos independientes, la gestión de ciclos de lanzamiento y el monitoreo de cómo los equipos utilizan los scripts.

Yarn mejora la experiencia del desarrollador al simplificar la ejecución de scripts, ofrecer prácticas predeterminadas que no requieren memorizar numerosos comandos y ayudar a los desarrolladores a entender mejor las herramientas que utilizan, contribuyendo así a su crecimiento como ingenieros de JavaScript DevOps.

Yarn facilita la gestión de monorepos mediante características como Workspaces, que permiten ejecutar scripts en todos los espacios de trabajo simultáneamente, y flujos de trabajo que permiten lanzar cada paquete por separado, asegurando una gestión eficiente y escalable de múltiples paquetes dentro de un único repositorio.

Yarn mejora la gestión de dependencias y caché al mantener una copia local de todos los paquetes dentro del repositorio, lo que permite a los colaboradores cambiar entre ramas rápidamente sin costos de contexto y garantizar que las implementaciones no se vean afectadas por problemas de dependencias externas.

Las restricciones en Yarn son una función que permite aplicar patrones específicos en todos los espacios de trabajo con pocas líneas de configuración, utilizando un lenguaje de programación especial. Esto facilita la uniformidad en la configuración, como asegurar la misma versión de dependencias en todos los espacios de trabajo.

Yarn realiza pruebas exhaustivas de extremo a extremo cada cuatro horas, probando proyectos de terceros populares para detectar incompatibilidades. Esto permite una rápida identificación y solución de problemas, garantizando la robustez y la compatibilidad de Yarn con el ecosistema de proyectos JavaScript.

Maël Nison
Maël Nison
33 min
01 Jul, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Yarn no es solo un gestor de paquetes, tiene la intención de ser un gestor de proyectos con un enfoque en la simplicidad y una buena experiencia para el desarrollador. El impacto de Yarn en los flujos de trabajo y la gestión de proyectos ha sido positivo, mejorando la escalabilidad y la gestión de versiones. Ofrece características como correcciones locales, paquetes comprimidos y compartir paquetes entre proyectos. La infraestructura de Yarn y las extensas pruebas garantizan la compatibilidad y detectan las regresiones. Yarn es modular, con planes para la versión 3 y un ecosistema de complementos más potente. La elección entre npm y Yarn depende de la configuración del proyecto.
Available in English: Yarn in Depth: Why & How

1. Introducción a Yarn y Valores Fundamentales

Short description:

Hoy vamos a hablar de qué es Yarn y qué puede ofrecerte. Yarn no es solo un gestor de paquetes, tiene la intención de ser un gestor de proyectos. Te permite administrar scripts, dividir tu aplicación en modelos independientes y más. Confiamos en nuestros colaboradores para hacer que Yarn sea sostenible y lo vemos como un proyecto. La solidez es un valor clave al fusionar PR, asegurando que Yarn detecte errores y no haga suposiciones descontroladas.

Hola a todos, para aquellos que no me conocen, mi nombre es Mael. Actualmente trabajo en Datadog y he estado liderando el desarrollo de Yarn durante algunos años. Hoy vamos a hablar extensamente sobre qué es y qué puede ofrecerte. Si bien no podremos abordar cada pequeña mejora de calidad de vida que ofrece, espero que al final de esta charla tengas una mejor idea de lo que hace que este proyecto sea único en nuestro ecosistema.

Primero, debemos discutir qué es realmente Yarn. Si le preguntas a alguien, probablemente te dirán que Yarn es un gestor de paquetes para JavaScript, y estarían en su mayoría en lo correcto. Pero eso es solo parte de la historia. Yarn no es solo un gestor de paquetes, tiene la intención de ser un gestor de proyectos. Un sistema de ejecución. De hecho, si lo piensas, Yarn te permite administrar scripts. Te permite dividir tu aplicación en modelos independientes. Pero como veremos más adelante, también se puede utilizar para gestionar los ciclos de lanzamiento, monitorear cómo tu equipo utiliza tus scripts, e incluso hacer cumplir estándares en tu monolito. Todas estas tareas van mucho más allá del típico gestor de paquetes, y cada lanzamiento empuja los límites aún más al introducir nuevas características.

Entonces, gestor de proyectos, suena bien. ¿Cómo llegamos allí? ¿Qué es lo que buscamos al gestionar PR? Vamos a discutir los valores fundamentales. Lo primero que debemos tener en 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, y Yarn no es una excepción. Para ayudar con eso, confiamos mucho en nuestros colaboradores para ser el cambio que desean ver y contribuir de vuelta al proyecto que les gusta. De esta manera, realmente no vemos Yarn como un producto. Realmente lo vemos como un proyecto. En la práctica, esto significa que nuestro equipo central 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 desde el origen, para que puedas probar fácilmente características independientes. Yarn se trata realmente de hacer posible que experimentes mucho más allá de lo que nosotros como equipo podríamos ofrecer por nosotros mismos. Un segundo valor importante que siempre tenemos en cuenta al fusionar PR es la solidez. Yarn debe decirte si algo está mal en tu aplicación. No debe permitirte cometer errores. No debe dejarlos pasar desapercibidos. No debe hacer suposiciones descontroladas. Esto puede sonar rígido porque tienes más errores de los que solías tener, pero es realmente crítico, ya sea que seas autor de aplicaciones o bibliotecas, necesitas tener confianza en que algo que funciona ahora lo hará en el futuro.

2. Impacto de Yarn y Flujos de Trabajo

Short description:

Yarn ayuda a los usuarios a comprender la herramienta y los guía en el camino de DevOps de JavaScript. Los comportamientos predeterminados y la experiencia del usuario son cruciales. El impacto de Yarn en el trabajo que hemos realizado hasta ahora ha sido positivo. Los flujos de trabajo como Ready Cycles y Release Workflow han mejorado la escalabilidad y la gestión de lanzamientos. Las instalaciones cero mantienen la caché del proyecto dentro del repositorio.

también funcionan en producción o cuando son instalados por tus consumidores. Otro es buenas prácticas. El panorama de JavaScript es amplio, cambia rápidamente y cuenta con muchas personas con opiniones muy marcadas. Como gestor de paquetes, estamos en una posición única para ayudar a nuestros usuarios a comprender la herramienta que están utilizando y guiarlos en el difícil camino. 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 camino en términos de JavaScript DevOps. Llegamos al último de este conjunto, los comportamientos predeterminados, que están directamente relacionados con la experiencia del desarrollador. La mayoría de nuestros usuarios solo usarán los comandos predeterminados de nuestra herramienta, lo cual es algo bueno porque la mayoría de ellos, no tienen que recordar una gran cantidad de banderas de línea de comandos solo por el hecho de ejecutar un comportamiento específico. Por ejemplo, el hecho de que puedas ejecutar cualquier script agregando el prefijo en tu CLI con solo Yarn, puede parecer una cosa muy simple, pero seguramente es una de las razones por las que algunas personas pueden encontrarlo atractivo. La experiencia del usuario es realmente importante y crucial para la experiencia del usuario de Yarn.

Ahora hemos visto un poco de lo que Yarn afirma ser. Ahora, vamos a hablar un poco sobre DevOps. ¿Qué hace Yarn realmente por ti, hablando prácticamente? Vamos a repasar dos historias interesantes de proyectos que lo adoptaron. Uno es un proyecto de código abierto y el otro es una aplicación interna que usamos en mi empresa. Sin sorpresas, el primero es Yarn en sí mismo. Antes de sumergirnos, déjame contarte una historia divertida. En Yarn 1, en realidad no usamos Workspaces para desarrollar Yarn. Fue un verdadero problema para nosotros porque no solo los problemas estaban ocultos para los propios mantenedores, sino que tampoco nos enfrentábamos directamente a los valores que algunas características podrían tener. Como resultado, no estábamos emergiendo cosas aunque tal vez deberíamos haberlo hecho simplemente porque no podíamos ver cuán impactantes serían en realidad. Cuando usas Workspaces, es muy evidente que, por ejemplo, necesitas poder ejecutar un script en todos tus Workspaces a la vez. Pero como no usábamos los Workspaces, realmente no parecía un gran problema para nosotros en ese momento. Hoy en día, tenemos una regla informal de que el equipo de Yarn debe usar todas las características incorporadas en el núcleo, y creo que eso ha tenido un impacto positivo en el trabajo que hemos realizado hasta ahora al obligarnos a usar todas las características que enviamos como parte de Yarn en sí mismo.

Entonces, ahora hablemos de los flujos de trabajo. El primero que vamos a discutir son los Ready Cycles. Nuestro proceso anterior en Yarn 1 era muy simple. Solo teníamos un archivo único en la raíz del repositorio, y se esperaba que cada PR que las personas hicieran agregara una línea a él. Funcionaba bien, pero después de cambiar a un monorepo, no se habría escalado muy bien ya que necesitábamos la capacidad de lanzar cada espacio de trabajo, cada paquete, por separado. Entonces, desarrollamos el Flujo de Trabajo de Lanzamiento, que no es muy diferente del paquete set chance que tal vez conozcas. La idea es que cada PR que fusionamos también debe incluir un pequeño archivo creado por Yarn mismo que enumera todos los workspaces que han sido modificados por el PR y si necesitan formar parte del próximo lanzamiento. Nuestro CI valida el contenido de estos archivos, y en el momento del lanzamiento, simplemente le indicamos a Yarn que agregue todos los archivos de versión en paquetes clásicos. Otro flujo de trabajo que estamos utilizando son las instalaciones cero. La idea es que decidimos mantener la caché del proyecto dentro del propio repositorio.

QnA

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.
Versionado y Publicación de Paquetes con Nx Release
DevOps.js Conf 2024DevOps.js Conf 2024
10 min
Versionado y Publicación de Paquetes con Nx Release
In this Talk, Austin Faisal introduces Nx Release and demonstrates how to improve versioning and publishing processes with it. The tool allows for a dry run to preview changes, keeps packages in sync, and generates changelogs. It also automates staging, committing, tagging, and publishing changes to the registry. Nx Release offers additional features such as independent versioning, automatic versioning with conventional commits, creating GitHub releases, customizable changelog rendering, and a programmable API.
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.