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.

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
Aprenda más sobre cómo aprovechar las características predeterminadas de los espacios de trabajo de npm para ayudarlo a administrar su proyecto monorepo, mientras también explora algunas de las nuevas características de npm cli.
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
Esta charla presenta la nueva convención Flat Routes que probablemente será la predeterminada en una futura versión de Remix. Simplifica la convención existente y también te brinda nuevas capacidades.
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
Escalar bases de código grandes, especialmente monorepos, puede ser una pesadilla en los sistemas de Integración Continua (CI). El panorama actual de las herramientas de CI tiende a ser orientado a máquinas, de bajo nivel y exigente en términos de mantenimiento. Lo peor es que a menudo están desconectadas de las necesidades y el flujo de trabajo real del desarrollador.¿Por qué es un obstáculo el CI? Porque los sistemas de CI actuales son comodines, sin una comprensión específica de tu base de código. No pueden aprovechar el contexto en el que operan para ofrecer optimizaciones.En esta charla, exploraremos el futuro del CI, diseñado específicamente para bases de código grandes y monorepos. Imagina un sistema de CI que comprenda la estructura de tu espacio de trabajo, paralelice dinámicamente las tareas en máquinas utilizando datos históricos, y haga todo esto con una configuración mínima y de alto nivel. Repensemos el CI, haciéndolo más inteligente, eficiente y alineado con las necesidades del desarrollador.
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
Nunca ha sido tan fácil hacer tu propio juego web, pero sigue siendo extremadamente difícil. ¿Qué juego deberías hacer? ¿Qué motor deberías elegir? Vamos a discutir cómo responder a estos problemas y formas de aprovechar la plataforma única que es la web.
Despliegue Atómico para Hipsters de JavaScript
DevOps.js Conf 2024DevOps.js Conf 2024
25 min
Despliegue Atómico para Hipsters de JavaScript
Desplegar una aplicación no es un proceso fácil. Te encontrarás con muchos problemas y puntos de dolor que resolver para que funcione correctamente. Lo peor es: ahora que puedes desplegar tu aplicación en producción, ¿cómo no vas a poder desplegar también todas las ramas del proyecto para tener acceso a vistas previas en vivo? ¿Y poder hacer un revert rápido a pedido?Afortunadamente, el clásico conjunto de herramientas de DevOps tiene todo lo que necesitas para lograrlo sin comprometer tu salud mental. Al mezclar expertamente Git, herramientas de Unix y llamadas a API, y orquestar todo ello con JavaScript, dominarás el secreto de los despliegues atómicos seguros.No necesitarás depender de servicios comerciales: ¡conviértete en el maestro perfecto de las herramientas y netlifica tu aplicación desde casa!
Tu Ritmo con GraphQL
GraphQL Galaxy 2022GraphQL Galaxy 2022
31 min
Tu Ritmo con GraphQL
Construir con GraphQL por primera vez puede ser desde desafiante hasta pan comido. Comprender qué características buscar en tus herramientas de cliente y servidor y adoptar los hábitos correctos (y deshacerte de los viejos hábitos) es la clave para tener éxito con un equipo de cualquier tamaño en GraphQL.

Esta charla ofrece una visión general de los desafíos comunes que he visto en numerosos equipos al construir con GraphQL, cómo superaron las fuentes comunes de frustración y la mentalidad que finalmente adoptaron, y las lecciones aprendidas, para que puedas adoptar y seguir confiando en GraphQL con confianza.

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
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
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.