Cloud
Astro 6 et les content collections pour la publication technique
Pourquoi les content collections d’Astro 6 changent la donne pour la publication technique structurée, le bilingue et des workflows éditoriaux maintenables.
La publication technique paraît simple tant que le site contient quelques fichiers Markdown.
Dès qu’il faut ajouter des catégories, des tags, des brouillons, du bilingue, des routes propres et des métadonnées structurées, cette simplicité apparente disparaît. C’est là que les content collections d’Astro cessent d’être un confort pour devenir une vraie brique d’architecture éditoriale.
La documentation Astro récente introduit aussi une distinction importante. Astro 6 ajoute des live content collections pour des sources distantes ou rafraîchies en continu, tandis que les collections de build restent le bon modèle pour du Markdown et du MDX locaux. Pour un site technique éditorial, le plus souvent, ce qu’on veut est précisément cette stabilité de build, pas du contenu vivant chargé à la volée.
Cas d’usage : publication bilingue
Dès qu’un site porte des versions française et anglaise du même article, les métadonnées doivent faire plus que contenir un titre et une date. Elles doivent aussi exprimer une relation entre les variantes.
Un schéma simple et robuste peut inclure :
- title
- description
- pubDate
- tags
- category
- lang
- translationKey
Cela suffit pour construire des listings par langue et relier les traductions entre elles.
import { glob } from 'astro/loaders';
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({
loader: glob({
pattern: '**/*.{md,mdx}',
base: './src/content/blog'
}),
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z.coerce.date(),
draft: z.boolean().default(false),
tags: z.array(z.string()).default([]),
category: z.enum(['Infrastructure', 'Cloud', 'Networking', 'Automation', 'AI', 'Snippets']),
lang: z.enum(['en', 'fr']),
translationKey: z.string()
})
});
export const collections = { blog }; Pourquoi le loader est important
L’une des leçons pratiques d’Astro 6 est que la couche de contenu devient plus explicite. Pour le contenu local, Astro documente des loaders intégrés comme glob() et file(). Cela rend la source des contenus plus visible et plus facile à déboguer, ce qui devient très utile quand le contenu cesse d’être “quelques fichiers” et devient le vrai produit du site.
Pour un site technique, cette explicitation est une qualité. Elle facilite la validation, le typage, la maintenance et les évolutions futures.
Une publication structurée vaut mieux qu’un Markdown ad hoc
L’intérêt des content collections n’est pas d’ajouter de l’abstraction pour le plaisir. C’est de stabiliser le modèle éditorial :
- frontmatter invalidé plus tôt
- tags plus cohérents
- catégories mieux contraintes
- pages d’article basées sur des données typées
- génération de routes plus prévisible
C’est particulièrement utile dès qu’on commence à mélanger du MDX avec des composants réutilisables comme des blocs de code copiables ou des liens de langue.
Conclusion pratique
Pour la publication technique, les content collections d’Astro ne sont pas une surcharge. Elles sont le mécanisme qui garde le modèle éditorial lisible quand le site dépasse le stade du simple blog.
C’est pour cette raison qu’il faut les traiter comme une vraie partie de l’architecture du site.