Downgrade Vite 8 → 7.3.6 pour corriger les erreurs d'optimisation
Downgrade Vite 8 → 7.3.6 pour corriger les erreurs d'optimisation
Documentation technique
Contexte (DOC)
Problème rencontré
Lors du développement avec Sanity Visual Editing, le serveur de développement local crashait avec des erreurs du type :
The file does not exist at ".../apps/web/node_modules/.vite/deps_ssr/handler-Cb452HQC.js"Cause identifiée
- Astro 7.3.4 utilise Vite 8.3.0 par défaut avec Rolldown comme optimiseur de dépendances
- L’optimisation des dépendances avec Rolldown semble instable avec la combinaison :
- Astro Cloudflare adapter
- Sanity Visual Editing (
@sanity/visual-editing,@sanity/visual-editing/react) - React 19
- Les fichiers optimisés disparaissaient du cache
node_modules/.vite/deps_ssrpendant le développement
Tentatives précédentes
- Ajout de
optimizeDeps.includepour forcer le prébundling des packages Sanity/React- Cela a aggravé les problèmes de cache invalidation
- Suppression de la configuration
optimizeDeps- Le problème persistait
Spécification (SPEC)
Solution choisie
Downgrader Vite de 8.3.0 à 7.3.6 (la dernière version stable de Vite 7).
Justification
- Vite 7 est une version mature et stable (publiée le 25 juin 2026)
- Vite 7 utilise Rollup classique pour l’optimisation des dépendances (plus stable que Rolldown)
- Astro 7 officiellement supporte Vite 7 (bien que Vite 8 soit la nouvelle par défaut)
- Les packages Sanity et React sont compatibles avec Vite 7
- C’est une solution temporaire en attendant une meilleure compatibilité entre Vite 8/Rolldown et Sanity Visual Editing
Changements apportés
- Dépendance directe : Ajout de
vite: "7.3.6"dansapps/web/package.json - Configuration Vite : Ajout de
@sanity/visual-editing/reactdansssr.noExternaldansastro.config.mjs - Nettoyage : Suppression du cache Vite (
apps/web/node_modules/.vite) et réinstallation complète des dépendances
Compatibilité
- ✅ Astro 7.3.4
- ✅ @astrojs/cloudflare 14.3.1
- ✅ @sanity/astro (dernière version)
- ✅ @sanity/visual-editing (dernière version)
- ✅ React 19.3.0
- ✅ Cloudflare Workers/Pages
Implications
- ⚠️ Performance : Vite 7 peut être légèrement plus lent que Vite 8 pour le cold start
- ⚠️ Dépréciations : Certains avertissements d’esbuild/Rolldown persistent mais ne bloquent pas le fonctionnement
- ⚠️ Avenir : Cette solution est temporaire. Il faudra réévaluer quand :
- Astro améliore la compatibilité Vite 8/Rolldown
- Sanity confirme la compatibilité avec Vite 8/Rolldown
- L’issue https://github.com/sanity-io/sanity/issues/2238 est résolue
Implémentation (CODE)
Fichiers modifiés1/2
-
apps/web/package.json
{"dependencies": {"vite": "7.3.6"}}
Fichiers modifiés2/2
-
apps/web/astro.config.mjs
vite: {ssr: {noExternal: ['@sanity/preview-url-secret','@sanity/client','@sanity/astro','@sanity/visual-editing','@sanity/visual-editing/react' // Ajouté],},}
Procédure d’installation
# Nettoyer le cache Viterm -rf apps/web/node_modules/.vite
# Réinstaller les dépendancestask install# ounpx pnpm@12.3.4 installTests (TEST)
Validation locale
# Typechecktask typecheck# ✅ Résultat : 0 erreurs
# Buildtask build# ✅ Résultat : Build réussi (avec avertissements non bloquants)
# Dev servertask dev# ✅ Résultat : Serveur démarré sur http://localhost:4321# ✅ Aucune erreur de fichier manquant dans .vite/deps_ssrTests fonctionnels
- ✅ Accès à
/blog/welcome-to-ocisans crash - ✅ Optimisation des dépendances Sanity réussie
- ✅ Reload automatique lors des changements de fichiers
Avertissements observés (non bloquants)
[vite] warning: `esbuild` option was specified by "vite:react-babel" plugin. This option is deprecated, please use `oxc` instead.[vite] warning: `optimizeDeps.esbuildOptions` option was specified by "vite:react-babel" plugin. This option is deprecated, please use `optimizeDeps.rolldownOptions` instead.Ces avertissements proviennent du plugin vite:react-babel et n’impactent pas le fonctionnement.
Intégration (INTÉG)
Validation du workflow GitHub Actions
Le workflow .github/workflows/deploy-dev.yml utilise :
- run: pnpm install --frozen-lockfile- run: pnpm run buildCes commandes fonctionneront avec le nouveau lockfile car :
pnpm-lock.yamla été mis à jour avec Vite 7.3.6- Le build passe localement et devrait passer en CI
- Les secrets Sanity et Cloudflare sont injectés via les variables d’environnement du workflow
Checklist avant commit
- Vite 7.3.6 installé comme dépendance directe
- Lockfile mis à jour
- Build local réussi
- Typecheck réussi
- Dev server local stable
- Aucun crash d’optimisation de dépendances
- Lint réussi
- Tests réussis
- Documentation mise à jour
Migration future vers Vite 8
Quand revenir à Vite 8 ?
-
Surveiller les issues :
-
Tester après mises à jour :
- Nouvelle version d’Astro (7.4+)
- Nouvelle version de Sanity (6.17+)
- Nouvelle version de @sanity/visual-editing
-
Procédure de retour à Vite 8 :
Terminal window # Supprimer la dépendance directepnpm remove vite# Mettre à jour Astro pour la dernière versionpnpm add astro@latest# Nettoyer et réinstallerrm -rf node_modules pnpm-lock.yaml apps/web/node_modules/.vitepnpm install# Testertask build && task dev