Librerías compartidas en Nx: Angular y TypeScript para múltiples apps

Clase 7 de 17Curso de Monorepositorios con NX

Resumen

Crear librerías compartidas en Nx es una estrategia clave para escalar equipos y proyectos. Aquí verás cómo estructurar un monorepo con Angular, Type Script, Jest y Nx Graph para compartir componentes, servicios, modelos y utilidades entre múltiples aplicaciones.

¿Qué construimos con Nx para compartir código?

Se crean dos bibliotecas complementarias dentro de packages: ui/shared para componentes Angular y utils/common para utilidades puras en Type Script. Ambas quedan disponibles para todo el Nx Workspace y permiten reutilizar código sin duplicarlo.

¿Cómo generar una library Angular standalone?

  • Ejecutar el generador: npx nx g, eligiendo Angular y opción library.
  • Ubicarla en packages/ui/shared para componentes compartidos.
  • Usar arquitectura standalone: sin módulos, componentes importables directamente.
  • Aceptar Jest para pruebas unitarias. Se generan configs de Jest y Type Script, README y project.json.
  • Revisar source/library: trae un ejemplo inicial que puede eliminarse para dejar solo componentes propios.

Lo esencial: ui/shared centraliza componentes reutilizables, con configuración de pruebas y tipado ya lista.

¿Qué incluye la configuración base?

  • Soporte de Type Script: tipado y compilación listos.
  • Jest habilitado: pruebas unitarias desde el inicio.
  • Estructura estándar de Nx: project.json, tsconfig, jest config y README.
  • Carpeta lib preparada para organizar componentes y piezas compartidas.

¿Cómo crear una librería Type Script común con Nx JS?

Se genera una biblioteca transversal para cualquier proyecto basado en Type Script: packages util/common (creada como utils/common). El objetivo: funciones, modelos y services que sirvan a Angular, React, Next JS u otros proyectos con Type Script.

¿Qué ventajas ofrece para múltiples proyectos?

  • Generación con Nx JS: npx nx g usando la opción JS, pero con base Type Script.
  • Bundler seleccionado: Type Script.
  • Linter configurado: slint para asegurar calidad de código.
  • Pruebas unitarias: Jest activado.
  • Estructura en source/lib: un archivo Type Script simple para exportar utilidades.

Beneficio claro: utils/common evita duplicar lógica y modelos, y se integra en cualquier app del monorepo.

¿Cómo visualizar dependencias con Nx Graph?

Para entender el mapa de dependencias, usar npx nx graph. Inicialmente, no hay enlaces entre apps y librerías; al incorporar componentes compartidos, el grafo refleja las relaciones.

¿Qué pasos integran ui/share en las apps?

  • Copiar el selector del componente de ui/share (por ejemplo, el mostrado como lib/ui/share) y pegarlo en el HTML de ambas aplicaciones.
  • Agregar el import correspondiente en el archivo TS de cada app para incluir el componente.
  • Abrir de nuevo el grafo con npx nx graph y activar show all projects: ahora se observan conexiones desde app uno y app dos hacia ui/share.

Lista rápida de habilidades y conceptos clave:

  • Nx Workspace: organización monorepo para múltiples apps y librerías.
  • npx nx g: comando para generar libraries y scaffolding.
  • library Angular standalone: componentes sin módulos, más simple y flexible.
  • ui/shared: componentes comunes de interfaz.
  • utils/common: utilidades, modelos y servicios en Type Script.
  • Jest: pruebas unitarias integradas.
  • Type Script: tipado fuerte, base del bundler en la lib común.
  • slint: linter para calidad de código.
  • Nx Graph: visualización de dependencias entre proyectos.

¿Te gustaría que el próximo paso sea conectar utils/common a una app y ver cómo cambia el grafo? Comparte tus dudas o el caso que quieres resolver.