# Nx
## Qué es
Un repositorio donde podemos tener varias aplicaciones, librerías de angular y brujerías donde comparten el mismo package.json
Este repositorio admite un montón de aplicaciones distintas, desde un backend mockeado hecho con msw o una librería genérica de javascript
## Ventajas
- Misma versión de librerías externas, angular, etc.. en todas las aplicaciones/librerías
- Cuando se deba actualizar sólo lo debemos actualizar las apps y libs de este repo. Las modificaciones de código se deberán hacer igual que antes pero ahora no nos olvidaremos de ningún repositorio y sólo deberemos hacerlo una vez
- Odin: mucho más rápido a la hora de desarrollar
- Odin2: a la hora de debuggear errores en odin es muchísimo más sencillo
- Al tener todos los proyectos en un mismo workspace se mergeará la épica relacionada de todos los proyectos a la vez (por ejemplo en los proyectos de los cuestionarios externos fue un poco caos esto)
- La estructura interna del proyecto no cambia, con lo que no hay fricción en este sentido.
- Rendimiento: parece que la caché de nx es mejor que la de cli
## Inconvenientes
- La fricción que puede suponer al principio a acostumbrarse a la nueva estructura de Nx
- Dockerfile: sin investigar
## Estimación de lo que queda
- Dockerfile
- Mover el repo
- Actualizar midagard y odin en el workspace actual
- Migrar Nidavellir y Asgard
- Creemos que dos días serían suficientes
## Notas:
- ¿ Sería recomendable tenerlo para el proyecto de las tareas ? Ya que vamos a tener que hacer cosas en Asgard...
## Para el futuro
- Investigar como realizar el ci en gitlab porque solo tendremos un repo y distintas apps a compilar, desplegar, etc
- Investigar qué tipos de caché y de builds tiene Nx como el incremental builds: https://nx.dev/recipe/setup-incremental-builds-angular y si esto hace que mejore
- Se podrá exportar un módulo entero de una aplicación ?? porque si pudiéramos exportar el shared module de Midgard lo mismo sería interesante crear una micro app para los pacs nuevos.
- Module federation.
- Jest ?