Files
IdeA/.ideai/memory/ticket74-f1-web-bundle-transport-seam.md
2026-07-17 09:09:46 +02:00

1.9 KiB

name, description, metadata
name description metadata
ticket74-f1-web-bundle-transport-seam Deux artefacts Vite (dist/dist-web), mode `web` portable Windows, et le câblage anti-divergence de la constante de transport.
type
reference

Le frontend produit deux artefacts Vite depuis les mêmes sources :

  • frontend/dist → transport tauri (desktop, build.frontendDist) — npm run build.
  • frontend/dist-web → transport http (packagé en ressource Tauri web/) — npm run build:web.
  • npm run build:bundle produit les deux : c'est le point d'entrée du packaging Tauri.

Le mode web passe par --mode web + frontend/.env.web (VITE_TRANSPORT=http), jamais par un préfixe inline VITE_TRANSPORT=http vite build : non portable Windows/NSIS, cible active du bundle. .env.web est versionné (non gitignoré) ; dist-web/ est ignoré.

Anti-divergence de __IDEA_TRANSPORT__ : frontend/src/app/transport.ts expose transportFromEnv(value), importé à la fois par di.tsx (resolveTransport/shouldUseHttp) et par vite.config.ts, qui lui passe VITE_TRANSPORT via loadEnv(mode). Même variable + même prédicat = une seule source. Modifier le prédicat déplace constante et runtime ensemble. vitest.config.ts réplique le define via le même helper.

La constante est publiée sur window dans main.tsx : define ne remplace que les occurrences existantes et une constante non référencée serait tree-shakée ; l'affectation est un effet de bord qui survit à la minification. Elle reporte le transport hors mock (VITE_USE_MOCK reste un switch distinct).

Pour identifier le transport d'un bundle bâti : grep -o '__IDEA_TRANSPORT__="[a-z]*"' dist*/assets/*.js. Ne pas se fier à la présence de __TAURI_INTERNALS__ ni à un nom de symbole minifié : les deux jeux d'adapters sont présents dans les deux bundles, un grep ne les discrimine pas.