Skip to content

Phase 1 - Test : Configuration Mode Hybride et Types Sanity

Phase : 1 - Configuration Mode Hybride et Types Sanity
Cycle : DOC → SPEC → CODE → TEST → INTÉG
Statut : En cours


Cette phase a pour objectif de configurer le mode hybride Astro (static par défaut, SSR à la demande) et d’activer la génération des types Sanity pour le Studio.

Configuration Sanity Studio (apps/studio/sanity.cli.ts) :

  • Activé schemaExtraction.enabled: true pour générer le schéma Sanity
  • Activé typegen.enabled: true pour générer les types TypeScript

Documentation mise à jour :

  • docs/L2_Presentation/astro/config/config.objectData.md - Documenté le mode hybride
  • docs/L2_Presentation/astro/config/phase1-config-ssg-types.spec.md - SPEC corrigée

Terminal window
cd apps/studio
npx sanity schema extract

Attendu :

  • Fichier schema.json généré dans apps/studio/
  • Message de succès : ✔ Extracted schema to /home/anderson/PP/apps/studio/schema.json
Terminal window
ls -la apps/studio/schema.json

Attendu :

  • Fichier schema.json existe
  • Taille > 0 (environ 37KB)

Terminal window
cd apps/studio
npx sanity typegen generate

Attendu :

  • Fichier sanity.types.ts généré dans apps/studio/
  • Message de succès : ✔ Successfully generated types to ./sanity.types.ts
  • Types générés pour tous les schémas Sanity
Terminal window
ls -la apps/studio/sanity.types.ts

Attendu :

  • Fichier sanity.types.ts existe
  • Taille > 0 (environ 6KB)

Terminal window
cd apps/web
npx pnpm@12.3.4 build

Attendu :

  • Build réussi sans erreurs
  • Message de succès : [build] Complete!
  • Mode hybride actif : output: "server" avec mode: "server"
  • Pages statiques pré-rendues dans dist/
  • Avertissement sur les pages dynamiques sans prerender = true (normal)
Terminal window
ls -la apps/web/dist/

Attendu :

  • Dossier dist/ créé
  • Fichiers statiques générés (HTML, CSS, JS)
  • Fichiers de configuration Cloudflare générés

Terminal window
cat apps/web/astro.config.mjs | grep -A 2 "output"

Attendu :

  • output: 'server' (mode hybride avec adaptateur Cloudflare)
  • Adaptateur Cloudflare configuré
Terminal window
cat apps/web/astro.config.mjs | grep -A 5 "adapter"

Attendu :

  • Adaptateur @astrojs/cloudflare configuré
  • imageService: 'passthrough'
  • prerenderEnvironment: 'node'

6.1. Vérification des fichiers générés

Section titled “6.1. Vérification des fichiers générés”
Terminal window
ls -la apps/studio/schema.json apps/studio/sanity.types.ts

Attendu :

  • schema.json existe
  • sanity.types.ts existe
Terminal window
cat docs/L2_Presentation/astro/config/config.objectData.md | grep -A 2 "Mode de rendu"

Attendu :

  • Documentation à jour : “Hybrid (static par défaut, SSR à la demande via prerender = false)”

  • ✅ schema.json généré avec succès
  • ✅ Taille : 37KB
  • ✅ Contient tous les schémas Sanity
  • ✅ sanity.types.ts généré avec succès
  • ✅ Taille : 6KB
  • ✅ Types générés pour 20 schémas
  • ✅ Build réussi sans erreurs
  • ✅ Mode hybride actif
  • ✅ Pages statiques pré-rendues
  • ⚠️ Avertissement sur la page /src/pages/blog/[...slug].astro (normal en mode hybride)
  • ✅ Documentation mise à jour
  • ✅ SPEC corrigée

La Phase 1 - Configuration Mode Hybride et Types Sanity est terminée avec succès.

  1. Configuration Sanity Studio :

    • Schema extraction activé
    • Typegen activé
    • Schéma et types générés
  2. Documentation :

    • Mode hybride documenté
    • SPEC corrigée
  3. Tests :

    • Schéma Sanity généré
    • Types Sanity générés
    • Build Astro réussi
  • Passer à l’étape INTÉG pour valider l’intégration
  • Continuer les phases suivantes selon le plan

  • Le mode hybride Astro utilise output: 'server' avec l’adaptateur Cloudflare
  • Les pages statiques doivent avoir export const prerender = true pour être pré-rendues
  • Les pages dynamiques doivent avoir export const prerender = false pour être rendues à la demande
  • Sanity TypeGen est configuré pour le Studio, pas pour le web app
  • Les types générés sont utilisés par le Studio pour la validation de type

Date Version Description Auteur
2026-09-16 1.0 Création initiale Devin