Tradicionalmente, los equipos de software organizan cada proyecto en su propio repositorio, este enfoque que tiene sus ventajas, está cambiando por el enfoque opuesto, un único repositorio que contiene el código fuente de múltiples proyectos. Este modelo se conoce como Monorepo y ha ganado popularidad gracias a herramientas como Nx Monorepo.
¿ Qué es un monorepo ?
Un único repositorio donde unificamos múltiples proyectos que podrían ser independientes en su despliegue o ejecución. Todos coexisten en una base de código unificada compartiendo dependencias y configuraciones.
¿Qué es Nx?
Es un conjunto de herramientas de gestión para construir, probar y desplegar múltiples aplicaciones y librerías en un mismo repositorio. Nx Monorepo hace posible que trabajar con grandes bases de código y múltiples equipos sea mucho más manejable y productivo.
Construido de una manera modular, un núcleo que puedes instalar con una funcionalidad básica y puedes añadir plugins opcionalmente muy específicos.
Entorno de Desarrollo:
- Sistema Operativo: Nx es compatible con los sistemas operativos (Windows, macOS, Linux).
- Node.js: Nx se basa en Node.js, se necesita tener una versión compatible instalada. Se recomienda utilizar la versión LTS más reciente.
- npm o Yarn (o pnpm, Bun): Estos son gestores de paquetes para Node.js y se utilizan para instalar Nx CLI y las dependencias de tus proyectos.
- Git: Para el control de versiones del repositorio.
- IDE/Editor de Código: un buen IDE como Cursor o IntelliJ con extensiones para Nx
Herramientas Nx monorepo
- Nx CLI: La interfaz de línea de comandos de Nx es esencial para crear, gestionar y ejecutar proyectos dentro de tu monorepo.
- Plugins de Nx: Dependiendo de los tipos de proyectos que tengas en tu monorepo, necesitarás instalar los plugins correspondientes. Estos son algunos de ellos.

- Nx Console: está disponible como extensión para los IDEs, proporciona una capa visual e interactiva que facilita la ejecución de comandos de una manera sencilla e interactiva.
- Cache Local y Remota: Diseñada para evitar realizar trabajo innecesario y mejorar CI/CD, es una técnica de optimización que permite reutilizar los resultados de las tareas ya completadas.
- Paralelización y Ejecución distribuida de Tareas: Ejecuta tareas en paralelo y distribuidas para escenarios CI/CD muy exigentes integrado con Nx Cloud se puede distribuir la ejecución de tareas en paralelo a través de múltiples servidores.
- Nx MCP server: Es la implementación de un servidor MCP específico para Nx monorepo. Permite una integración contextual entre tu monorepo de Nx y los asistentes de inteligencia artificial (IA), como GitHub Copilot, Cursor o Claude Desktop. Al entender el contexto del monorepo, la IA puede generar código que alineado con la arquitectura existente, las convenciones de tu equipo de desarrollo y las mejores prácticas de Nx.
Ejemplo práctico de Nx Monorepo
Entramos ahora en la parte práctica vamos a crear un nuevo workspace:
npx create-nx-workspace
Este comando usa la última versión estable v21.1.2
Un asistente nos guiará a través del proceso, debemos indicar el nombre del workspace y varias opciones por defecto para su creación.
Una vez generado el repositorio instalamos complementos en nuestro IDE, que nos ayudan a gestionar nuestro monorepo como la Nx Console, la integración con IA de Cursor con el contexto Nx y el MCP server nx-mcp.
Utilizando las herramientas configuradas para utilizar la IA, en este caso Nx MCP server vamos a crear en nuestro repositorio un nuevo proyecto React Typescript usando Vitest y Playwright para test.
use mcp tool for create demo-app a React TypeScript application
test Vitest and Playwright
Nos va indicando los pasos y nosotros decidimos la ejecución del paso. Finalmente revisaremos en el último paso las opciones seleccionadas y pulsaremos el botón de Generar.
Una vez generada la aplicación podemos usar la herramienta Nx Console para ejecutar comandos pare la revisión estática de código que ya viene preconfigurado o lanzar los test unitarios.
Nx optimiza el rendimiento en CI/CD con Task Caching detectando automáticamente cuándo una tarea, una compilación o una prueba se ha ejecutado previamente y puede reutilizar el resultado de la caché, acelerando las builds y ejecuciones de tests unitarios.
npx nx lint demo-app && npx nx test demo-app
Resultado de la ejecución de los comandos lint y test previamente cacheados.
Nx gestiona las dependencias unificando su configuración en un único lugar no teniendo que configurar dichas dependencias por cada aplicación.
// package.json app
{
"name": "@nx-repository/demo-app",
"version": "0.0.1",
"private": true,
"nx": {
"name": "demo-app"
}
}
Tiene una especial relevancia unificar la configuración de los analizadores estáticos de código como por ejemplo ESLint, en un solo sitio del Nx monorepo, de esta forma garantizamos que todo nuestro código cumple con las reglas establecidas y evitamos fallos que se podrían producir al tener múltiples configuraciones en cada proyecto.
// eslint.config.mjs (app)
import nx from "@nx/eslint-plugin";
import baseConfig from "../../eslint.config.mjs";
export default [
...baseConfig,
...nx.configs["flat/react"],
{
files: [
"**/!*.ts",
"**/!*.tsx",
"**/!*.js",
"**/!*.jsx"
],
// Add or modify ESLint rules for these files
rules: {}
}
];
Finalmente con el comando preview podemos visualizar la aplicación demo generada en un navegador.
A medida que va creciendo el código en las organizaciones optimizar los ciclos de CI/CD y unificar dependencias se ha convertido en un camino crítico que debemos optimizar para mejorar nuestra productividad.
Enlaces de interés para aprender más sobre Nx Monorepo
- Intro to Nx
https://nx.dev/getting-started/intro - Youtube Chanel: Nx — Smart Repos — Fast Builds
https://www.youtube.com/@nxdevtools - Sobre monorepos y las herramientas para crearlos
https://monorepo.tools/