|
| 1 | +# MIGRATION GUIDE — @andes/plex v9 (Angular 15) |
| 2 | + |
| 3 | +**TL;DR** |
| 4 | +- Actualizamos la librería a **Angular 15** (Ivy parcial con `ng-packagr`). |
| 5 | +- La **demo** sale de `src/` y pasa a ser un **proyecto aparte** en `projects/plex-demo`. |
| 6 | +- Migramos componentes a **Angular Material v15 (MDC)** y eliminamos/reemplazamos |
| 7 | +dependencias legacy donde aplicaba. |
| 8 | +- Se reorganizan estilos/assets y se ajustan scripts de build y CI. |
| 9 | + |
| 10 | + |
| 11 | +## ¿Quién debería leer esto? |
| 12 | +- Equipos que consumen `@andes/plex` y van a actualizar a la **v9** (Angular 15). |
| 13 | +- Quienes mantienen forks/derivados de Plex o scripts de publicación. |
| 14 | + |
| 15 | + |
| 16 | +## Requisitos de entorno |
| 17 | +- **Node.js**: ^14.20.0 | ^16.13.0 | ^18.10.0 (recomendado) |
| 18 | +- **TypeScript**: >= 4.8.2 < 5.0 |
| 19 | +- **RxJS**: ^7.x |
| 20 | +- **Angular CLI/Core**: 15.2.x |
| 21 | +Fuente: tabla de compatibilidad oficial de Angular para la línea 15.x. |
| 22 | +Asegurate de que tu CI (GitHub Actions) use una de esas versiones de Node. |
| 23 | + |
| 24 | + |
| 25 | +## Cambios rompientes (BREAKING) |
| 26 | +1. **Angular 15 + Ivy parcial** |
| 27 | +2. **Demo separada del código fuente** |
| 28 | +3. **Angular Material v15 (MDC)** |
| 29 | +4. **Reemplazos de librerías deprecadas** |
| 30 | +5. **Estilos y assets** |
| 31 | +6. **Polyfills** |
| 32 | + |
| 33 | + |
| 34 | +## Cómo actualizar tu aplicación que usa Plex |
| 35 | +1. Actualizá Angular a 15 |
| 36 | +2. Alineá peerDependencies (usadas por Plex 9) |
| 37 | +3. Reemplazos de UI |
| 38 | +4. Estilos de Plex |
| 39 | +5. Polyfills |
| 40 | +6. TypeScript |
| 41 | + |
| 42 | + |
| 43 | +## Uso de la demo (proyecto `projects/plex-demo`) |
| 44 | +- **Desarrollo en caliente** contra el build de la lib: |
| 45 | +npm run dev:demo |
| 46 | +- **Servir sólo la demo usando el último build existente de la lib:** |
| 47 | +npm run start:demo |
| 48 | +- **Build de la demo (prod):** |
| 49 | +npm run build:demo:prod |
| 50 | + |
| 51 | + |
| 52 | +## Scripts relevantes en `package.json` |
| 53 | +- `build:lib` → compila la librería con `ng-packagr`. |
| 54 | +- `postbuild:lib` → parchea exports (estilos/assets) tras el build. |
| 55 | +- `build` → `build:lib` + `postbuild:lib`. |
| 56 | +- `build:lib:watch` → watch de la librería (desarrollo demo). |
| 57 | +- `start:demo` → verifica `dist/` y corre `ng serve plex-demo`. |
| 58 | +- `dev:demo` → build inicial de la lib + watch + serve demo. |
| 59 | +- `build:demo` / `build:demo:prod` → compilan la demo (dev/prod). |
| 60 | + |
| 61 | + |
| 62 | +## CI / Publicación |
| 63 | +- Node en Actions: usar 16.18.x o 18.10+ acorde Angular 15. |
| 64 | +- Workflows: build.yml ejecuta lint + build de la librería + tests/E2E (si aplica). |
| 65 | +- release.yml compila docs y corre semantic-release para publicar. |
| 66 | +- Versionado: usamos Conventional Commits y semantic-release. |
| 67 | +- Para betas, publicar con rama beta y pre-releases (9.0.0-beta.1, etc.). |
| 68 | +- El merge a master corta 9.0.0 estable. |
| 69 | + |
| 70 | + |
| 71 | +## Notas de compatibilidad |
| 72 | +- Si tu app tenía dependencias directas a Bootstrap/jQuery heredadas de Plex 8, extraélas o |
| 73 | +reemplazalas por Angular Material. |
| 74 | +- core-js ya no debería importarse manualmente. |
| 75 | +- Verificá budgets de build de tu app; el bundle de la demo tiene budgets propios. |
| 76 | + |
| 77 | + |
| 78 | +## Checklist de migración |
| 79 | +- [ ] App actualizada a Angular 15 (core, CLI, Material, TS 4.8, RxJS 7) |
| 80 | +- [ ] Reemplazos de bootstrapMaterial y otros deps legacy |
| 81 | +- [ ] Import de estilos de Plex actualizado |
| 82 | +- [ ] Polyfills limpiados |
| 83 | +- [ ] CI actualizado a Node compatible |
| 84 | +- [ ] Pruebas unitarias y E2E verdes |
0 commit comments