Skip to content

chore(web): converger en un solo vite (8.1.5) y cerrar TD-008 - #17

Merged
beyondnetPeru merged 1 commit into
mainfrom
chore/td008-converger-vite
Aug 10, 2026
Merged

chore(web): converger en un solo vite (8.1.5) y cerrar TD-008#17
beyondnetPeru merged 1 commit into
mainfrom
chore/td008-converger-vite

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Cierra TD-008, el último punto de deuda que quedaba abierto.

El problema

npm ls vite daba dos majors:

  • vite@6.4.3 fijado en local por app-webel que construía (npx vite --version → 6.4.3)
  • vite@8.1.5 izado a la raíz del workspace, arrastrado por @vitejs/plugin-react, vitest@4.1.7 y el constructor de Storybook 10

Es 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-web pasa a fijar 8.1.5, la versión en la que todo lo demás ya había convergido. Se retira el mapeo paths de tsconfig.node.json que 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.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: node_modules/esbuild sigue en 0.28.1.

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:

[UNRESOLVED_IMPORT] Could not resolve '../src/presentation/shared/theme/globals.css'
in .storybook/preview.ts

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.ts los addons @storybook/addon-essentials y @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 typecheck 0 errores (y ya sin el paths provisional)
vitest 1697/1697 en 182 ficheros
vite build OK, con los chunks nombrados intactos
servidor de desarrollo HTTP 200
vite preview sirve el bundle construido
storybook build OK — roto antes de este PR, en ambos majors
eslint 0 errores

Node: vite 8 exige ^20.19.0 || >=22.12.0; CI fija node-version: 22, que resuelve muy por encima de 22.12.

🤖 Generated with Claude Code

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>
@beyondnetPeru
beyondnetPeru merged commit 8cce15e into main Aug 10, 2026
23 checks passed
@beyondnetPeru
beyondnetPeru deleted the chore/td008-converger-vite branch August 10, 2026 15:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant