chore(web): converger en un solo vite (8.1.5) y cerrar TD-008 - #17
Merged
Conversation
El árbol tenía dos majors: `app-web` fijaba 6.4.3 en local y npm izaba 8.1.5 a la raíz del workspace, arrastrado por @vitejs/plugin-react, vitest y el constructor de Storybook. El binario que construía era el local, así que el runner de pruebas y todos los plugins se compilaban contra un major distinto del empaquetador que producía dist/. `app-web` pasa a fijar 8.1.5, la versión en la que todo lo demás ya había convergido, y se retira el mapeo `paths` de tsconfig.node.json: el typecheck vuelve a describir la resolución real en vez de una declarada. Dos cosas lo hicieron menos mecánico que los números: - El lock repetía la copia vieja. `apps/ums.web-app/node_modules/vite → 6.4.3` sobrevivía a cada `npm install`, incluido `npm install vite@8.1.5 --workspace=app-web`, que informaba «up to date» y no tocaba nada. Hubo que retirar esa entrada del package-lock.json a mano y reinstalar. Regenerar el lock no era opción: en este monorepo pierde dependencias transitivas al rehacerlo desde cero. Verificado que lo retirado son 28 entradas y TODAS cuelgan del subárbol anidado (vite 6 y su esbuild privado); la raíz queda intacta. - Vite 8 sustituye rollup por rolldown. El `manualChunks` de vite.config.ts es una opción de la era rollup: sobrevive al cambio y los chunks nombrados —vendor-react, zod y los tres de esquemas— siguen saliendo como se declaran. `build.target` ya estaba fijado a es2020, así que el cambio de destino por defecto de vite 7 nunca aplicó aquí. ## Storybook ya estaba roto, y se arregla aquí Verificar la pareja que este cambio altera destapó que `storybook build` fallaba. Falla IGUAL en vite 6 —comprobado restaurando el árbol previo—: `.storybook/preview.ts` importaba `../src/presentation/shared/theme/globals.css`, una ruta que no existe en este repositorio (la hoja global es `src/index.css`). Storybook llevaba sin construir desde la resincronización y nada en CI lo construye, así que nadie se enteró. Se arregla aquí en vez de registrarlo aparte, porque si no la verificación de TD-008 diría «no pude comprobar la única pareja que este cambio toca». De paso se retiran de `.storybook/main.ts` los addons `addon-essentials` y `addon-interactions`, absorbidos por el núcleo en Storybook 9 y reportados como no encontrados en cada arranque desde entonces. Verificado: typecheck 0, vitest 1697/1697, `vite build` OK con los chunks intactos, servidor de desarrollo 200, `vite preview` sirve el bundle construido, `storybook build` OK, eslint 0 errores. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cierra TD-008, el último punto de deuda que quedaba abierto.
El problema
npm ls vitedaba dos majors:vite@6.4.3fijado en local porapp-web— el que construía (npx vite --version→ 6.4.3)vite@8.1.5izado a la raíz del workspace, arrastrado por@vitejs/plugin-react,vitest@4.1.7y el constructor de Storybook 10Es decir: el runner de pruebas y todos los plugins se compilaban contra un major distinto del empaquetador que producía
dist/. Nada observable, pero es la clase de desfase que produce un fallo irreproducible más adelante.app-webpasa a fijar 8.1.5, la versión en la que todo lo demás ya había convergido. Se retira el mapeopathsdetsconfig.node.jsonque TD-004 había puesto como medida provisional: el typecheck vuelve a describir la resolución real en vez de una declarada.Dos cosas que no fueron mecánicas
El lock repetía la copia vieja.
apps/ums.web-app/node_modules/vite → 6.4.3sobrevivía a cadanpm install, incluidonpm install vite@8.1.5 --workspace=app-web, que informaba «up to date» y no tocaba nada. Hubo que retirar esa entrada delpackage-lock.jsona mano y reinstalar. Regenerar el lock no era opción — en este monorepo pierde dependencias transitivas al rehacerlo desde cero.Verificado que lo retirado son 28 entradas y todas cuelgan del subárbol anidado (vite 6 y su
esbuildprivado). La raíz queda intacta:node_modules/esbuildsigue en 0.28.1.Vite 8 sustituye rollup por rolldown. El
manualChunksdevite.config.tses una opción de la era rollup: sobrevive al cambio y los chunks nombrados —vendor-react,zody los tres de esquemas— siguen saliendo como se declaran.build.targetya estaba fijado aes2020, así que el cambio de destino por defecto de vite 7 nunca aplicó aquí.Storybook ya estaba roto, y se arregla aquí
Verificar la pareja que este cambio altera destapó que
storybook buildfallaba:Falla igual en vite 6 — comprobado restaurando el árbol previo y reconstruyendo. Esa ruta no existe en este repositorio; la hoja global es
src/index.css. Storybook llevaba sin construir desde la resincronización, y nada en CI lo construye, así que nadie se enteró.Se arregla aquí en vez de registrarlo aparte porque si no la verificación de TD-008 diría «no pude comprobar la única pareja que este cambio toca». De paso se retiran de
.storybook/main.tslos addons@storybook/addon-essentialsy@storybook/addon-interactions, absorbidos por el núcleo en Storybook 9 y reportados como no encontrados en cada arranque desde entonces.Verificación
npm run typecheckpathsprovisional)vitestvite buildvite previewstorybook buildeslintNode: vite 8 exige
^20.19.0 || >=22.12.0; CI fijanode-version: 22, que resuelve muy por encima de 22.12.🤖 Generated with Claude Code