Solution Starlight - Configuration Content Collections Externes
DOC : Consultation de la documentation
Section titled âDOC : Consultation de la documentationâSource : Astro MCP - Content Collections glob loader
Recherche : glob loader base path custom directory
RĂ©sultat : Le loader glob() accepte un paramĂštre base pour lire depuis nâimporte quel rĂ©pertoire sur le filesystem
SPEC : Solution implémentée - Option 3 (Meilleure solution)
Section titled âSPEC : Solution implĂ©mentĂ©e - Option 3 (Meilleure solution)âProblĂšme rĂ©solu :
- Sync script complexe qui cassait la structure
- Duplication des fichiers entre
docs/,GettingStarted/etapps/web/src/content/docs/ - Starlight échouait à afficher les docs
Solution appliquée :
Utiliser le loader glob() avec des bases personnalisées pour lire directement depuis les répertoires originaux.
Avantages :
- â Pas de duplication - Les docs restent dans leurs rĂ©pertoires originaux
- â Pas de sync script - Configuration statique, simple et fiable
- â
Structure préservée - Starlight lit directement depuis
docs/etGettingStarted/ - â Maintenance rĂ©duite - Un seul endroit pour Ă©diter les docs
- â Compatible Starlight - Utilise lâAPI officielle dâAstro
CODE : Modifications effectuées
Section titled âCODE : Modifications effectuĂ©esâ1. Modification src/content.config.ts
Section titled â1. Modification src/content.config.tsâAjout de la collection gettingStarted :
const gettingStarted = defineCollection({ loader: glob({ base: '../../GettingStarted', pattern: '**/*.{md,mdx}' }), schema: (context) => { const starlightSchema = docsSchema()(context); return z.preprocess((data: any) => { if (data && typeof data === 'object') { if (!data.title) { const inferredTitle = formatTitleFromPath((context as any)?.id); return { ...data, title: inferredTitle, }; } } return data; }, starlightSchema); },});Modification de la collection docs :
docs: defineCollection({ loader: glob({ base: '../../docs', pattern: '**/*.{md,mdx}' }), // ... schema avec preprocessing}),Suppression de lâimport inutilisĂ© :
// Supprimé: docsLoader (remplacé par glob)2. Modification astro.config.mjs
Section titled â2. Modification astro.config.mjsâSuppression du lien âPrĂ©sentationâ :
sidebar: [ { label: 'Getting Started', items: [{ autogenerate: { directory: 'GettingStarted' } }], }, { label: 'Documentation Technique', items: [{ autogenerate: { directory: 'docs' } }], },],3. Modification .github/workflows/deploy-dev.yml
Section titled â3. Modification .github/workflows/deploy-dev.ymlâSuppression du sync-docs.sh :
# Supprimé:# - name: Sync docs to Starlight# run: ./sync-docs.sh source-to-starlight# - name: Commit synced docs# run: |# git config --local user.email "github-actions[bot]@users.noreply.github.com"# git config --local user.name "github-actions[bot]"# git add apps/web/src/content/docs/# git diff --staged --quiet || git commit -m "chore: sync docs from source to starlight [skip ci]"TEST : Validation
Section titled âTEST : Validationâ- â Typecheck rĂ©ussi (0 erreurs, 0 warnings)
- â Build rĂ©ussi (107 fichiers HTML indexĂ©s)
- â Pagefind indexation rĂ©ussie
- â Sitemap gĂ©nĂ©rĂ©
- â
Docs de
docs/etGettingStarted/chargés correctement
INTĂG : Documentation et nettoyage
Section titled âINTĂG : Documentation et nettoyageâActions recommandĂ©es :
Section titled âActions recommandĂ©es :â-
Supprimer les répertoires dupliqués (optionnel) :
Terminal window rm -rf apps/web/src/content/docs/docsrm -rf apps/web/src/content/docs/getting-started -
Supprimer ou archiver le script sync-docs.sh :
Terminal window # Archiver (recommandé)mv sync-docs.sh sync-docs.sh.backup# Ou supprimerrm sync-docs.sh -
Documenter le nouveau workflow :
- Ăditer directement dans
docs/etGettingStarted/ - Le build Astro chargera automatiquement les modifications
- Plus besoin de script de synchronisation
- Ăditer directement dans
Notes importantes :
Section titled âNotes importantes :â- Structure des fichiers : Les fichiers dans
docs/sont organisĂ©s par sous-dossiers (L1_Contenu, L2_Presentation, L3_Backend, PM, SOP) - Fichiers PM et SOP : Ils sont inclus dans le build mais peuvent ĂȘtre exclus via filtre si nĂ©cessaire
- GettingStarted : Synchronisé automatiquement via la collection séparée
- Starlight sidebar : Utilise
autogeneratepour générer automatiquement la navigation
Conclusion
Section titled âConclusionâCette solution Ă©limine la complexitĂ© du sync script et permet une maintenance simplifiĂ©e de la documentation. Les docs sont maintenant gĂ©rĂ©s comme une source unique de vĂ©ritĂ© dans leurs rĂ©pertoires originaux.