Monorepos Rápidos de React con una Alta Calidad DX

Rate this content
Bookmark

Los monorepos han estado presentes durante algún tiempo, pero solo recientemente han ganado popularidad en la comunidad de JavaScript. La promesa de compartir fácilmente código, hacer cumplir mejores estándares organizativos, mayor movilidad del desarrollador debido a herramientas comunes y más, es muy atractiva. Sin embargo, si se aborda de manera ingenua, un monorepo rápidamente se convertirá en un gran desorden: tiempos de CI lentos que se disparan, dependencias enredadas entre proyectos, difícil de navegar y, en última instancia, frustrante. En esta charla, veremos las herramientas disponibles, cómo comenzar rápidamente un nuevo monorepo de React en particular y aprenderemos los ingredientes clave necesarios para construir un monorepo exitoso y duradero que se pueda escalar.

This talk has been presented at React Summit 2022, check out the latest edition of this React Conference.

FAQ

NX es un sistema de construcción inteligente, rápido y extensible utilizado para monorepos, que ayuda a comenzar rápidamente y tener éxito a largo plazo con proyectos de software.

Narwhal ofrece servicios de consultoría para empresas Fortune 500, especializándose en el desarrollo y migración de monorepos y en la configuración de herramientas como NX y Lerna.

Un monorepo es un único repositorio Git que contiene dos o más proyectos distintos, mientras que un polyrepo implica un escenario más clásico con un único repositorio por proyecto.

NX permite construir solo los componentes que han cambiado, utiliza el caché para acelerar las compilaciones y distribuye la ejecución de tareas, lo que hace que los monorepos sean más eficientes y rápidos.

NX Cloud distribuye el caché y la ejecución de tareas entre los miembros del equipo y en CI, mejorando la velocidad y la eficiencia del desarrollo en entornos de monorepo.

NX utiliza etiquetas y reglas específicas de ESLint para controlar las dependencias dentro del monorepo, evitando importaciones indebidas y manteniendo el código limpio y organizado.

NX proporciona scripts de migración que actualizan automáticamente la configuración y el código fuente durante las actualizaciones de versiones, facilitando la adopción y el mantenimiento continuos.

Juri Strumpflohner
Juri Strumpflohner
22 min
21 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Bienvenido a una charla sobre monorepos rápidos de React con una alta calidad DX. Los monorepos permiten la colaboración y el intercambio de código entre paquetes, proporcionando un entorno de desarrollo más organizado. Aprovechar el almacenamiento en caché y la distribución en CI puede mejorar la velocidad y eficiencia. NX proporciona una configuración de monorepo rica en funciones para React, mejorando la experiencia del desarrollador. Herramientas de monorepo como la extensión de consola NX y la visualización del gráfico del proyecto mejoran las capacidades y hacen cumplir la calidad del código.

1. Introducción a los Monorepos de React

Short description:

Bienvenidos a mi charla sobre monorepos de React rápidos con una alta calidad de DX. Soy Joris Schumfler, Director de Experiencia de Desarrollador en Narwhal. Brindamos servicios de consultoría para empresas Fortune 500, especializándonos en monorepos. NX es un sistema de construcción inteligente, rápido y extensible que te ayuda a tener éxito a largo plazo. Es muy popular, superando el millón de dólares en diciembre y a punto de alcanzar los dos millones por semana en junio.

¡Hola y bienvenidos a mi charla sobre monorepos de React rápidos con una alta calidad de DX! Pero antes de continuar, permítanme presentarme. Mi nombre es Joris Schumfler, soy Director de Experiencia de Desarrollador aquí en Narwhal. También soy un Experto en Desarrollo Web certificado por Google. Soy instructor de ECHI y Embajador de Cybers.

Narwhal es la empresa detrás de NX y brindamos servicios de consultoría para empresas Fortune 500, pero no solo eso. Nuestro alcance abarca desde ayudar con el desarrollo de Angular y React, pero en particular, ayudamos con los monorepos, es decir, ayudamos a migrar a escenarios de monorepos, configurar nuevos monorepos, pero sobre todo, ayudamos a tener éxito con esos monorepos a largo plazo. También somos los creadores de la herramienta de código abierto NX. Y por si acaso te lo perdiste, recientemente también asumimos la responsabilidad de Leerna, que ahora se une a NX.

Entonces, ¿qué es NX? NX es un sistema de construcción inteligente, rápido y extensible que se puede utilizar para monorepos. Y hoy no voy a entrar específicamente en NX, pero lo estoy utilizando como un ejemplo de un conjunto de características como una herramienta de monorepo completamente funcional que puede ayudarte no solo a comenzar rápidamente, sino también a tener éxito a largo plazo. Ahora NX es muy popular. Hemos superado el millón de dólares en diciembre y probablemente alcanzaremos los dos millones por semana en junio. Es muy emocionante y muestra cuánto interés ha ganado el espacio de los monorepos recientemente.

2. Comprendiendo los Monorepos y Polyrepos

Short description:

Ahora, ¿qué son los monorepos? Recientemente, Rich Harris expresó su insatisfacción con el término monorepo, ya que implica un único repositorio para toda la organización. Sin embargo, en realidad, las grandes empresas a menudo tienen múltiples monorepos, divididos por departamento o dominio, junto con polyrepos. Estos repositorios pueden compartir componentes a través de registros internos, permitiendo que los polyrepos se beneficien de las bibliotecas construidas dentro de los monorepos. Por otro lado, un polyrepo es un escenario más tradicional con un único repositorio que contiene un proyecto.

Ahora, ¿qué son los monorepos? Rich Harris, hace un par de semanas, publicó un tweet con el que estoy totalmente de acuerdo, porque tengo la misma pregunta de las personas y tengo que responder y explicar una y otra vez. Básicamente, no estaba contento con el término monorepo. Y el problema es que monorepo implica, o lo que mucha gente piensa, es que necesitas tener un único repositorio para toda la organización. Ahora, es perfectamente comprensible por qué la gente piensa eso, pero en realidad, lo que vemos cuando trabajamos ahora, por ejemplo, con grandes empresas, es algo más como esto. Así que tienes grandes monorepos, un par de ellos dentro de tu empresa, tal vez divididos por departamento, organización o dominio, y luego también tienes los polyrepos existentes, o incluso nuevos polyrepos, que surgen dentro de esa organización. Entonces, si tienes una combinación de este tipo de paisaje y compartes cosas a través de registros, a través de registros internos, incluso los monorepos comparten algunas de las partes para el exterior. Porque si tienes algunos polyrepos que podrían beneficiarse de, digamos, la biblioteca de componentes que construyes dentro de un determinado monorepo, es posible que también quieras publicar eso en un registro, aparte de simplemente usarlo dentro de ese monorepo. Así que eso está perfectamente bien. Ahora, probablemente tener un término como repositorio multiproyecto versus repositorio de un solo proyecto sería más útil o más significativo, pero no voy a acuñar un nuevo término aquí. Así que cuando hablo de monorepos, lo que quiero decir básicamente es un único repositorio Git con dos o más proyectos distintos, y Polyrepo por otro lado es un escenario más clásico, que es bastante básico, que es como un único repositorio con un proyecto en él.

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

Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.
Remix Flat Routes – Una Evolución en el Enrutamiento
Remix Conf Europe 2022Remix Conf Europe 2022
16 min
Remix Flat Routes – Una Evolución en el Enrutamiento
Top Content
Remix Flat Routes is a new convention that aims to make it easier to see and organize the routes in your app. It allows for the co-location of support files with routes, decreases refactor and redesign friction, and helps apps migrate to Remix. Flat Folders convention supports co-location and allows importing assets as relative imports. To migrate existing apps to Flat Routes, use the Remix Flat Routes package's migration tool.
Poner fin al dolor: Repensando CI para Monorepos Grandes
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Poner fin al dolor: Repensando CI para Monorepos Grandes
Today's Talk discusses rethinking CI in monorepos, with a focus on leveraging the implicit graph of project dependencies to optimize build times and manage complexity. The use of NX Replay and NX Agents is highlighted as a way to enhance CI efficiency by caching previous computations and distributing tasks across multiple machines. Fine-grained distribution and flakiness detection are discussed as methods to improve distribution efficiency and ensure a clean setup. Enabling distribution with NX Agents simplifies the setup process, and NX Cloud offers dynamic scaling and cost reduction. Overall, the Talk explores strategies to improve the scalability and efficiency of CI pipelines in monorepos.
Cómo hacer un juego web tú solo
JS GameDev Summit 2023JS GameDev Summit 2023
27 min
Cómo hacer un juego web tú solo
This talk guides you on how to make a web game by yourself, emphasizing the importance of focusing on tasks that interest you and outsourcing the rest. It suggests choosing a game engine that allows distribution on the web and aligns with your understanding and enjoyment. The talk also highlights the significance of finding fun in the creative process, managing scope, cutting features that don't align with the game's direction, and iterating to the finish line. It concludes by discussing the options for publishing the game on the web and leveraging unique web features.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
This Talk discusses atomic deployment for JavaScript and TypeScript, focusing on automated deployment processes, Git hooks, and using hard links to copy changes. The speaker demonstrates setting up a bare repository, configuring deployment variables, and using the post-receive hook to push changes to production. They also cover environment setup, branch configuration, and the build process. The Talk concludes with tips on real use cases, webhooks, and wrapping the deployment process.
Tu Ritmo con GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
31 min
Tu Ritmo con GraphQL
The Talk discusses the value proposition of GraphQL and its ability to solve common pain points in API development. It highlights the importance of making informed decisions when choosing GraphQL clients, servers, and schema builders. The Talk also emphasizes the need to focus on the best developer experience in the present rather than seeking a perfect long-term solution. Additionally, it mentions the future of the Urkel GraphQL client and the reasons for dropping ReScript support. Overall, the Talk provides insights into the current state and future trends of GraphQL development.

Workshops on related topic

React a Escala con Nx
React Summit 2023React Summit 2023
145 min
React a Escala con Nx
Top Content
Featured WorkshopFree
Isaac Mann
Isaac Mann
Vamos a utilizar Nx y algunos de sus plugins para acelerar el desarrollo de esta aplicación.
Algunas de las cosas que aprenderás:- Generar un espacio de trabajo Nx prístino- Generar aplicaciones frontend React y APIs backend dentro de tu espacio de trabajo, con proxies preconfigurados- Crear librerías compartidas para reutilizar código- Generar nuevos componentes enrutados con todas las rutas preconfiguradas por Nx y listas para usar- Cómo organizar el código en un monorepositorio- Mover fácilmente las librerías alrededor de tu estructura de carpetas- Crear historias de Storybook y pruebas e2e de Cypress para tus componentes
Tabla de contenidos: - Lab 1 - Generar un espacio de trabajo vacío- Lab 2 - Generar una aplicación React- Lab 3 - Ejecutores- Lab 3.1 - Migraciones- Lab 4 - Generar una librería de componentes- Lab 5 - Generar una librería de utilidades- Lab 6 - Generar una librería de rutas- Lab 7 - Añadir una API de Express- Lab 8 - Mostrar un juego completo en el componente de detalle de juego enrutado- Lab 9 - Generar una librería de tipos que la API y el frontend pueden compartir- Lab 10 - Generar historias de Storybook para el componente de interfaz de usuario compartido- Lab 11 - Prueba E2E del componente compartido
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Monorepos de Node con Nx
Node Congress 2023Node Congress 2023
160 min
Monorepos de Node con Nx
Top Content
WorkshopFree
Isaac Mann
Isaac Mann
Varias apis y varios equipos en el mismo repositorio pueden causar muchos dolores de cabeza, pero Nx te tiene cubierto. Aprende a compartir código, mantener archivos de configuración y coordinar cambios en un monorepo que puede escalar tanto como tu organización. Nx te permite dar estructura a un repositorio con cientos de colaboradores y elimina las desaceleraciones de CI que normalmente ocurren a medida que crece la base de código.
Índice de contenidos:- Laboratorio 1 - Generar un espacio de trabajo vacío- Laboratorio 2 - Generar una api de node- Laboratorio 3 - Ejecutores- Laboratorio 4 - Migraciones- Laboratorio 5 - Generar una biblioteca de autenticación- Laboratorio 6 - Generar una biblioteca de base de datos- Laboratorio 7 - Añadir un cli de node- Laboratorio 8 - Limites de módulo- Laboratorio 9 - Plugins y Generadores - Introducción- Laboratorio 10 - Plugins y Generadores - Modificación de archivos- Laboratorio 11 - Configuración de CI- Laboratorio 12 - Caché distribuida
Managers Are From Mars, Devs Are From Venus
TechLead Conference 2024TechLead Conference 2024
111 min
Managers Are From Mars, Devs Are From Venus
Workshop
Mo Khazali
Mo Khazali
Una Guía para Desarrolladores sobre Cómo Comunicar, Convencer y Colaborar Efectivamente con los Stakeholders
Es una historia tan antigua como el tiempo: la colaboración entre desarrolladores y stakeholders de negocios ha sido durante mucho tiempo un desafío, con una falta de comunicación clara que a menudo deja a ambas partes frustradas. Los mejores desarrolladores pueden comprender profundamente las necesidades de sus contrapartes de negocios, comunicar efectivamente la estrategia técnica sin perder a la audiencia no técnica y convencer al negocio de tomar las decisiones correctas. Trabajando en una consultoría, he fallado y tenido éxito en arquitectar y “vender” visiones técnicas, aprendiendo muchas lecciones en el camino.Ya sea que trabajes en una empresa de productos, seas consultor/freelancer, o quieras aventurarte más allá de ser solo un desarrollador, la capacidad de convencer y comunicar claramente con los stakeholders puede diferenciarte en la industria tecnológica. Esto se vuelve aún más importante con el auge de GenAI y el mercado de desarrolladores cada vez más competitivo, ya que la resolución de problemas y la comunicación efectiva son clave para posicionarte.En esta masterclass, compartiré ejemplos del mundo real, tanto buenos como malos, y te guiaré a través de poner la teoría en práctica mediante dojos.
Cómo crear experiencias de edición que tu equipo amará
React Advanced Conference 2021React Advanced Conference 2021
168 min
Cómo crear experiencias de edición que tu equipo amará
Workshop
Lauren Etheridge
Knut Melvær
2 authors
El contenido es una parte crucial de lo que construyes en la web. Las tecnologías web modernas aportan mucho a la experiencia del desarrollador en términos de construir sitios impulsados por contenido, pero ¿cómo podemos mejorar las cosas para los editores y creadores de contenido? En este masterclass aprenderás cómo usar Sanity.io para abordar la modelización de contenido estructurado, y cómo construir, iterar y configurar tu propio CMS para unificar los modelos de datos con experiencias de edición eficientes y agradables. Está dirigido a desarrolladores web que desean ofrecer mejores experiencias de contenido para sus equipos de contenido y clientes.