Markdown
Le Markdown est couramment utilisé pour créer des contenus à forte teneur en texte, tels que des articles de blog et de la documentation. Astro inclut une prise en charge intégrée des fichiers Markdown standard qui peuvent également inclure un frontmatter YAML pour définir des propriétés personnalisées telles qu’un titre, une description et des balises.
Dans Astro, vous pouvez créer du contenu en utilisant GitHub Flavored Markdown, puis l’afficher dans des composants .astro
. Cela combine un format d’écriture familier conçu pour le contenu avec la flexibilité de la syntaxe et de l’architecture des composants d’Astro.
Pour des fonctionnalités supplémentaires, telles que l’inclusion de composants et d’expressions JSX dans Markdown, ajoutez l’intégration @astrojs/mdx
pour écrire votre contenu Markdown en utilisant MDX.
Organiser les fichiers Markdown
Titre de la section Organiser les fichiers MarkdownVos fichiers Markdown locaux peuvent être conservés n’importe où dans votre répertoire src/
. Ils peuvent être importés dans les composants .astro
en utilisant une instruction import
pour un seul fichier et import.meta.glob()
de Vite pour interroger plusieurs fichiers à la fois.
Si vous avez des groupes de fichiers Markdown apparentés, envisagez de les définir comme des collections. Cela présente plusieurs avantages, notamment la possibilité de stocker les fichiers Markdown n’importe où sur votre système de fichiers ou à distance.
Les collections vous permettent également d’utiliser une API optimisée et spécifique au contenu pour interroger et afficher votre contenu. Les collections sont destinées aux ensembles de données qui partagent la même structure, tels que les articles de blog ou les pages de produits. Lorsque vous définissez cette forme dans un schéma, vous bénéficiez en outre de la validation, de la sécurité des types et de l’Intellisense dans votre éditeur.
Expressions dynamiques de type JSX
Titre de la section Expressions dynamiques de type JSXAprès avoir importé ou analysé des fichiers Markdown, vous pouvez écrire des modèles HTML dynamiques dans vos composants .astro
qui incluent les données du frontmatter et le contenu du corps du texte.
Propriétés disponibles
Titre de la section Propriétés disponiblesInterroger les collections
Titre de la section Interroger les collectionsLorsque vous récupérez des données de vos collections via des fonctions d’aide, les propriétés de votre document Markdown sont disponibles dans un objet data
(par exemple post.data.title
). De plus, body
contient le contenu brut, non compilé, sous forme de chaîne de caractères.
Importation de Markdown
Titre de la section Importation de MarkdownLes propriétés exportées suivantes sont disponibles dans votre composant .astro
lors de l’importation de Markdown en utilisant import
ou import.meta.glob()
:
file
- Le chemin absolu du fichier (par exemple/home/user/projects/.../file.md
).url
- L’URL de la page (par exemple/fr/guides/markdown-content
).frontmatter
- Contient toutes les données spécifiées dans le frontmatter YAML du fichier.<Content />
- Un composant qui renvoie le contenu complet et affiché du fichier.RawContent()
- Une fonction qui renvoie le document Markdown brut sous forme de chaîne de caractères.compiledContent()
- Une fonction qui retourne le document Markdown compilé en une chaîne HTML.getHeadings()
- Une fonction asynchrone qui retourne un tableau de tous les titres (<h1>
à<h6>
) dans le fichier avec le type :{ depth: number ; slug: string ; text: string }[]
. Leslug
de chaque titre correspond à l’identifiant généré pour un titre donné et peut être utilisé pour les liens d’ancrage.
Un exemple de billet de blog en Markdown peut passer l’objet Astro.props
suivant :
Le composant <Content />
Titre de la section Le composant <Content />Le composant <Content />
est disponible en important Content
à partir d’un fichier Markdown. Ce composant renvoie le contenu complet du fichier, affiché en HTML. Vous pouvez optionnellement renommer Content
en n’importe quel nom de composant que vous préférez.
Vous pouvez également rendre le contenu HTML d’une entrée de collection Markdown en affichant un composant <Content />
.
ID des titres
Titre de la section ID des titresEn écrivant des titres en Markdown, vous obtiendrez automatiquement des liens d’ancrage qui vous permettront d’accéder directement à certaines sections de votre page.
Astro génère des id
s d’en-tête basés sur github-slugger
. Vous pouvez trouver plus d’exemples dans la documentation de github-slugger.
ID des titres et plugins
Titre de la section ID des titres et pluginsAstro injecte un attribut id
dans tous les éléments d’en-tête (<h1>
à <h6>
) dans les fichiers Markdown et MDX et fournit un utilitaire getHeadings()
pour récupérer ces ID dans les propriétés exportées Markdown.
Vous pouvez personnaliser ces ID en ajoutant un plugin rehype qui injecte les attributs id
(par exemple rehype-slug
). Vos ID personnalisés, au lieu des valeurs par défaut d’Astro, seront reflétés dans la sortie HTML et les éléments retournés par getHeadings()
.
Par défaut, Astro injecte les attributs id
après l’exécution de vos plugins rehype. Si l’un de vos plugins rehype personnalisés a besoin d’accéder aux ID injectés par Astro, vous pouvez importer et utiliser directement le plugin rehypeHeadingIds
d’Astro. Assurez-vous d’ajouter rehypeHeadingIds
avant tous les plugins qui en dépendent :
Plugins Markdown
Titre de la section Plugins MarkdownLa prise en charge de Markdown dans Astro est assurée par remark, un puissant outil d’analyse et de traitement doté d’un écosystème actif. D’autres analyseurs Markdown comme Pandoc et markdown-it ne sont pas supportés actuellement.
Astro applique par défaut les plugins GitHub-flavored Markdown et SmartyPants. Cela permet de générer des liens cliquables à partir du texte et de formater les citations et les tirets cadratins.
Vous pouvez personnaliser la façon dont remark analyse votre Markdown dans astro.config.mjs
. Voir la liste complète des options de configuration Markdown.
Ajouter des plugins remark et rehype
Titre de la section Ajouter des plugins remark et rehypeAstro prend en charge l’ajout de plugins tiers remark et rehype pour Markdown. Ces plugins vous permettent d’étendre votre Markdown avec de nouvelles fonctionnalités, comme générer automatiquement une table des matières, appliquer des étiquettes accessibles aux émojis et styliser votre Markdown.
Nous vous encourageons à consulter awesome-remark et awesome-rehype parmi les plugins populaires ! Consultez le fichier README de chaque plugin pour obtenir des instructions d’installation spécifiques.
Cet exemple applique remark-toc
et rehype-accessible-emojis
aux fichiers Markdown :
Personnaliser un plugin
Titre de la section Personnaliser un pluginPour personnaliser un plugin, il faut lui ajouter un objet d’options dans un tableau imbriqué.
L’exemple ci-dessous ajoute l’option heading
au plugin remarkToc
pour modifier l’emplacement de la table des matières, et l’option behavior
au plugin rehype-autolink-headings
afin d’ajouter la balise d’ancrage après le texte du titre.
Modification programmatique du frontmatter
Titre de la section Modification programmatique du frontmatterVous pouvez ajouter des propriétés au frontmatter de tous vos fichiers Markdown et MDX en utilisant un plugin remark ou rehype.
-
Ajoutez une propriété
customProperty
à l’objetdata.astro.frontmatter
présent dans l’argumentfile
de votre plugin :Ajouté à la version : astro@2.0.0
data.astro.frontmatter
contient toutes les propriétés d’un document Markdown ou MDX donné. Cela vous permet de modifier les propriétés existantes du frontmatter, ou de calculer de nouvelles propriétés à partir de ce frontmatter existant. -
Appliquez ce plugin à votre configuration d’intégration
markdown
oumdx
:ou
Maintenant, chaque fichier Markdown ou MDX aura une propriété customProperty
dans son frontmatter, ce qui la rendra disponible lors de l’importation de votre Markdown et à partir de la propriété Astro.props.frontmatter
dans vos mises en page.
Étendre la configuration Markdown à partir de MDX
Titre de la section Étendre la configuration Markdown à partir de MDXL’intégration MDX d’Astro étend par défaut la configuration Markdown existante de votre projet. Pour remplacer des options individuelles, vous pouvez spécifier leur équivalent dans votre configuration MDX.
L’exemple suivant désactive l’option GitHub-Flavored Markdown et applique un ensemble différent de plugins Remark pour les fichiers MDX :
Pour éviter d’étendre votre configuration Markdown depuis MDX, mettez l’option extendMarkdownConfig
(activée par défaut) sur false
:
Coloration syntaxique
Titre de la section Coloration syntaxiqueAstro est livré avec un support intégré pour Shiki et Prism. Cela permet de mettre en évidence la syntaxe pour :
- tous les blocs de code (```) utilisés dans un fichier Markdown ou MDX.
- dans le composant
<Code />
intégré (alimenté par Shiki). - dans le composant
<Prism />
(alimenté par Prism).
Shiki est activé par défaut, préconfiguré avec le thème github-dark
. La sortie compilée sera limitée à des styles
intégrés au HTML sans classes CSS, feuilles de style ou JS côté client supplémentaires.
Configuration de Shiki
Titre de la section Configuration de ShikiShiki est notre colorateur syntaxique par défaut. Vous pouvez configurer toutes les options via l’objet shikiConfig
comme suit :
Les blocs de code Astro sont stylisés en utilisant la classe .astro-code
. Lorsque vous suivez la documentation de Shiki (par exemple pour personnaliser le duo de thèmes clair/obscur ou plusieurs thèmes), assurez-vous de remplacer la classe .shiki
dans les exemples par .astro-code
.
Ajouter votre propre thème
Titre de la section Ajouter votre propre thèmeAu lieu d’utiliser l’un des thèmes prédéfinis de Shiki, vous pouvez importer un thème personnalisé à partir d’un fichier local.
Nous vous conseillons également de lire la documentation de Shiki sur les thèmes pour en savoir plus sur les thèmes, les bascules entre mode clair et mode foncé, ou le style via les variables CSS.
Colorateur syntaxique par défaut
Titre de la section Colorateur syntaxique par défautSi vous souhaitez utiliser 'prism'
par défaut, ou désactiver complètement la coloration syntaxique, vous pouvez utiliser l’objet de configuration markdown.syntaxHighlighting
:
Configuration de Prism
Titre de la section Configuration de PrismSi vous choisissez d’utiliser Prism, Astro appliquera les classes CSS de Prism à la place. Notez que vous devez apporter votre propre feuille de style CSS pour que la coloration syntaxique apparaisse !
-
Choisissez une feuille de style prédéfinie parmi les Thèmes Prism disponibles.
-
Ajoutez cette feuille de style dans le répertoire
public/
de votre projet. -
Chargez-la dans la balise
<head>
de votre page dans un composant de mise en page via une balise<link>
. (Voir l’utilisation de base de Prism.)
Vous pouvez également consulter la liste des langages supportés par Prism pour en savoir plus sur ses options et son utilisation.
Récupérer du Markdown à distance
Titre de la section Récupérer du Markdown à distanceAstro n’inclut pas de support intégré pour le Markdown à distance en dehors des collections de contenu expérimentales!.
Pour récupérer directement du Markdown distant et l’afficher en HTML, vous devrez installer et configurer votre propre analyseur Markdown à partir de NPM. Celui-ci n’héritera pas des paramètres Markdown intégrés d’Astro que vous avez configurés.
Assurez-vous de bien comprendre ces limitations avant d’implémenter ceci dans votre projet, et envisagez de récupérer votre Markdown distant en utilisant un chargeur de collections de contenu à la place.
Pages Markdown individuelles
Titre de la section Pages Markdown individuellesLes collections de contenu et l’importation de Markdown dans les composants .astro
offrent davantage de fonctionnalités pour le rendu de votre Markdown et constituent le moyen recommandé pour gérer la plupart de votre contenu. Cependant, il peut arriver que vous souhaitiez simplement ajouter un fichier à src/pages/
et avoir une page simple créée automatiquement pour vous.
Astro traite tout fichier supporté dans le répertoire /src/pages/
comme une page, y compris .md
et d’autres types de fichiers Markdown.
Placer un fichier dans ce répertoire, ou n’importe quel sous-répertoire, construira automatiquement une route de page en utilisant le nom de chemin du fichier et affichera le contenu Markdown affiché en HTML.
Propriété layout
du frontmatter
Titre de la section Propriété layout du frontmatterPour aider avec la fonctionnalité limitée des pages Markdown, Astro fournit une propriété frontmatter layout
spéciale qui est un chemin relatif vers un composant de mise en page Markdown. Si votre fichier Markdown est situé dans src/pages/
, créez un composant de mise en page et ajoutez-le dans cette propriété de mise en page pour fournir une enveloppe de page autour de votre contenu Markdown.
Ce composant de mise en page est un composant Astro normal avec des propriétés spécifiques automatiquement disponibles à travers Astro.props
pour votre modèle Astro. Par exemple, vous pouvez accéder aux propriétés du frontmatter de votre fichier Markdown via Astro.props.frontmatter
:
Vous pouvez également styliser votre Markdown dans votre composant de mise en page.