Y no voy a hablar de esa herramienta o esa herramienta, Yarn o NX o TurboRepo. Quiero aprovechar esta oportunidad y estos pocos minutos para explicar cuáles son las decisiones, cuáles son las estrategias que debemos tomar cuando nos mudamos o tenemos un Monorepo. Porque estas decisiones, que a veces tomamos sin preocuparnos realmente por ellas, las tomamos como ideas implícitas, en realidad tienen un impacto en todo nuestro proceso de desarrollo. Impactarán en la calidad de nuestro producto, en la velocidad de desarrollo, en la formación que debemos brindar al equipo, y así sucesivamente.
No hay una respuesta correcta o incorrecta aquí de la que vaya a hablar y decir, mira, esta es una forma de hacerlo, pero más bien, cuáles son las consideraciones, en qué cosas debes pensar. Entonces, si volvemos atrás, ¿qué es un Monorepo? Un Monorepo es un único repositorio que contiene múltiples artefactos, cosas que deseas compartir, cosas que deseas publicar. Esto puede ser un paquete, un servicio backend, una aplicación frontend, y así sucesivamente.
Y la primera pregunta importante que debes hacerte cuando te pasas a un Monorepo es qué quiero incluir en mi Monorepo. Esto puede ser muchas cosas diferentes. Pueden ser las diferentes herramientas que estamos utilizando. Puede ser una aplicación frontend, microservicios, paquetes, servidores backend, y así sucesivamente. Esta es como la decisión de punto cero. ¿Qué pongo? Y no significa que tengas que poner todo el código de la empresa dentro de un solo Monorepo. Definitivamente puede ser solo una parte del código que tienes.
La otra decisión es si realmente debería optar por un Monorepo. Hay muchos artículos, deberías buscar si debería usar un Monorepo, y luego hay una respuesta, no deberías usar un Monorepo, y así sucesivamente. Entonces, en tercer lugar, porque hay diferentes consideraciones y diferentes cosas en las que debes pensar cuando tienes un Monorepo. Pero digamos que decidiste que sí, queremos ir con el Monorepo. Tu repositorio incluirá múltiples artefactos, y en el mundo de JavaScript y Node.js, esto significa que tendrá múltiples archivos package.json. Cada archivo package.json está relacionado con un artefacto que deseas publicar.
Y lo primero que tenemos dentro de nuestro archivo package.json es qué artefactos, qué dependencias y qué dependencias necesita este artefacto para funcionar. Y esto nos lleva a nuestra primera decisión, que es la instalación. Así es como se ven nuestros paquetes. De acuerdo. En cada archivo package.json, tenemos un conjunto de dependencias. Y cómo vamos a instalar. Entonces, si seguimos el mismo enfoque que usamos en un repositorio políglota cuando teníamos múltiples repositorios, significa que bajo cada paquete tendré un módulo de nodo que... No puedo hacer eso. Que tendrá todos los paquetes que necesita. Pero como sabemos que node_modules es algo realmente grande, y no queremos replicarlo múltiples veces para cada una de las dependencias, en realidad tenemos otro enfoque que podemos usar. Y este enfoque es agrupar los paquetes. En lugar de instalar cada paquete en su propio espacio de trabajo, podemos mover todo a la raíz de nuestro proyecto, de nuestro repositorio, e instalarlos una vez allí. Y la razón por la que esto funcionará, conocemos el algoritmo de búsqueda de node.
Comments