Aller au contenu principal
Version : 3.1.1

Blog

La fonction blog vous permet de déployer un blog complet en un rien de temps.

info

Consultez la documentation de référence de l'API du plugin du Blog pour une liste exhaustive des options.

Configuration initiale​

Pour configurer le blog de votre site, commencez par créer un répertoire blog.

Ensuite, ajoutez un lien vers le blog dans docusaurus.config.js :

docusaurus.config.js
export default {
themeConfig: {
// ...
navbar: {
items: [
// ...
{to: 'blog', label: 'Blog', position: 'left'}, // ou position: 'right'
],
},
},
};

Ajouter des articles​

Pour publier dans le blog, créez un fichier Markdown dans le répertoire blog.

Par exemple, crĂ©ez un fichier Ă  website/blog/2019-09-05-hello-docusaurus.md :

website/blog/2019-09-05-hello-docusaurus.md
---
title: Bienvenue Ă  Docusaurus
description: Ceci est mon premier article sur Docusaurus.
slug: welcome-docusaurus-v2
authors:
- name: Joel Marcey
title: Co-créateur de Docusaurus 1
url: https://github.com/JoelMarcey
image_url: https://github.com/JoelMarcey.png
- name: SĂ©bastien Lorber
title: Mainteneur de Docusaurus
url: https://sebastienlorber.com
image_url: https://github.com/slorber.png
tags: [hello, docusaurus-v2]
image: https://i.imgur.com/mErPwqL.png
hide_table_of_contents: false
---

Bienvenue sur ce blog. Ce blog est créé avec [**Docusaurus 2**](https://docusaurus.io/).

<!-- truncate -->

Ceci est mon premier article sur Docusaurus 2.

Toute une série d'explorations à suivre.

Le front matter est utile pour ajouter des métadonnées supplémentaires à votre article de blog, par exemple des informations sur l'auteur, mais Docusaurus sera capable de déduire toutes les métadonnées nécessaires sans le frontmatter. Pour connaßtre tous les champs possibles, consultez la documentation de l'API.

Liste du blog​

La page d'index du blog (par dĂ©faut, elle se trouve dans /blog) est la page de prĂ©sentation du blog, oĂč tous les articles du blog sont affichĂ©s collectivement.

Utilisez le marqueur <!--truncate--> dans votre article du blog pour reprĂ©senter ce qui sera affichĂ© comme rĂ©sumĂ© lors de l'affichage de tous les articles du blog publiĂ©s. Tout ce qui est au-dessus de <!--truncate--> fera partie du rĂ©sumĂ©. Notez que la partie situĂ©e au-dessus du marqueur truncate doit ĂȘtre un texte Markdown autonome pouvant ĂȘtre rendu. Par exemple :

website/blog/my-post.md
---
title: Exemple Markdown de troncature du blog
---

Tous ces éléments feront partie du résumé de l'article du blog.

<!-- truncate -->

Mais tout ce qui se fait Ă  partir d'ici ne le sera plus.

Pour les fichiers utilisant l'extension .mdx, utilisez un commentaire MDX {/* truncate */} Ă  la place :

website/blog/my-post.mdx
---
title: Exemple MDX de troncature du blog
---

Tous ces éléments feront partie du résumé de l'article du blog.

{/* truncate */}

Mais tout ce qui se fait Ă  partir d'ici ne le sera plus.

Par défaut, 10 articles sont affichés sur chaque page de la liste du blog, mais vous pouvez contrÎler la pagination avec l'option postsPerPage dans la configuration du plugin. Si vous définissez postsPerPage: 'ALL', la pagination sera désactivée et tous les articles s'afficheront en premiÚre page. Vous pouvez également ajouter une méta description à la page de la liste de blog pour un meilleur référencement :

docusaurus.config.js
export default {
// ...
presets: [
[
'@docusaurus/preset-classic',
{
blog: {
blogTitle: 'Blog de Docusaurus !',
blogDescription: 'Un blog propulsĂ© par Docusaurus !',
postsPerPage: 'ALL',
},
},
],
],
};

Barre latĂ©rale du blog​

La barre latérale du blog affiche les articles récents du blog. Le nombre d'éléments affichés par défaut est de 5, mais vous pouvez personnaliser avec l'option blogSidebarCount dans la configuration du plugin. En définissant blogSidebarCount: 0, la barre latérale sera complÚtement désactivée, le conteneur étant également supprimé. Cela augmentera la largeur du conteneur principal. En particulier, si vous avez défini blogSidebarCount: 'ALL', tous les articles seront affichés.

Vous pouvez Ă©galement modifier le texte d'entĂȘte de la barre latĂ©rale avec l'option blogSidebarTitle. Par exemple, si vous avez dĂ©fini blogSidebarCount : 'ALL', au lieu de l'affichage par dĂ©faut « Articles rĂ©cents Â», vous pourriez prĂ©fĂ©rer afficher « Tous les articles Â» :

docusaurus.config.js
export default {
presets: [
[
'@docusaurus/preset-classic',
{
blog: {
blogSidebarTitle: 'Tous les articles',
blogSidebarCount: 'ALL',
},
},
],
],
};

Date de l'article du blog​

Docusaurus extraira une date AAAA-MM-JJ à partir de nombreux patterns tels que AAAA-MM-JJ-mon-titre-article-du-blog.md ou AAAA/MM/JJ/mon-titre-article-du-blog.md. Cela vous permet de regrouper facilement les articles de blog par année, par mois, ou d'utiliser une structure plate.

Patterns d'extraction de date pris en charge
ModĂšleExemple
Fichier simple2021-05-28-my-blog-post-title.md
Fichier MDX2021-05-28-my-blog-post-title.mdx
Dossier simple + index.md2021-05-28-my-blog-post-title/index.md
Dossier nommé par date2021-05-28/my-blog-post-title.md
Dossiers imbriqués par date2021/05/28/my-blog-post-title.md
Dossiers partiellement imbriqués par date2021/05-28-my-blog-post-title.md
Dossiers imbriqués + index.md2021/05/28/my-blog-post-title/index.md
Date au milieu du chemincategory/2021/05-28-my-blog-post-title.md

Docusaurus peut extraire la date des publications en utilisant n'importe quel modÚle de nommage ci-dessus. Il est conseillé de choisir un modÚle et de l'appliquer à tous les articles pour éviter toute confusion.

astuce

Utiliser un dossier peut s'avĂ©rer pratique pour placer les images de l'article de blog au mĂȘme endroit que le fichier Markdown.

Cette convention de nommage est facultative, et vous pouvez fournir la date dans le front matter. Puisque le front matter suit la syntaxe YAML oĂč la notation de la date est prise en charge, vous pouvez utiliser le front matter si vous avez besoin de dates de publication plus prĂ©cises. Par exemple, si vous avez plusieurs articles publiĂ©s le mĂȘme jour, vous pouvez les trier selon l'heure de la journĂ©e :

earlier-post.md
---
date: 2021-09-13T10:00
---
later-post.md
---
date: 2021-09-13T18:00
---

Auteurs d'articles du blog​

Utilisez le champ authors du front matter pour déclarer les auteurs des articles du blog. Un auteur doit avoir au moins name ou image_url. Docusaurus utilise des informations comme url, email et title, mais toute autre information est autorisée.

Auteurs en ligne​

Les auteurs d'articles peuvent ĂȘtre dĂ©clarĂ©s directement Ă  l'intĂ©rieur du front matter :

my-blog-post.md
---
authors:
name: Joel Marcey
title: Co-créateur de Docusaurus 1
url: https://github.com/JoelMarcey
image_url: https://github.com/JoelMarcey.png
email: jimarcey@gmail.com
---
astuce

Cette option convient particuliÚrement pour commencer ou pour des auteurs occasionnels ou irréguliers.

info

PrĂ©fĂ©rez l'utilisation de authors du front matter, mais l'ancien author_* du front matter reste pris en charge :

my-blog-post.md
---
author: Joel Marcey
author_title: Co-créateur de Docusaurus 1
author_url: https://github.com/JoelMarcey
author_image_url: https://github.com/JoelMarcey.png
---

Auteurs globaux​

Pour les auteurs rĂ©guliers, il peut ĂȘtre fastidieux de maintenir leurs informations dans chaque article du blog.

Il est possible de dĂ©clarer ces auteurs globalement dans un fichier de configuration :

website/blog/authors.yml
jmarcey:
name: Joel Marcey
title: Co-créateur de Docusaurus 1
url: https://github.com/JoelMarcey
image_url: https://github.com/JoelMarcey.png
email: jimarcey@gmail.com

slorber:
name: SĂ©bastien Lorber
title: Mainteneur de Docusaurus
url: https://sebastienlorber.com
image_url: https://github.com/slorber.png
astuce

Utilisez l'option du plugin authorsMapPath pour configurer le chemin. Le format JSON est Ă©galement pris en charge.

Dans le front matter des articles du blog, vous pouvez rĂ©fĂ©rencer les auteurs dĂ©clarĂ©s dans le fichier de configuration globale :

my-blog-post.md
---
authors: jmarcey
---
info

Le systĂšme authors est trĂšs flexible et peut convenir Ă  un cas d'utilisation plus avancĂ© :

MĂ©langer les auteurs en ligne et les auteurs globaux

Vous pouvez utiliser les auteurs globaux la plupart du temps, et toujours utiliser les auteurs en ligne :

my-blog-post.md
---
authors:
- jmarcey
- slorber
- name: Nom de l'auteur en ligne
title: Titre de l'auteur en ligne
url: https://github.com/inlineAuthor
image_url: https://github.com/inlineAuthor
---
Remplacer localement les auteurs globaux

Vous pouvez personnaliser les données globales de l'auteur sur la base de chaque article du blog:

my-blog-post.md
---
authors:
- key: jmarcey
title: Le nouveau titre de Joel Marcey
- key: slorber
name: Le nouveau nom de SĂ©bastien Lorber
---
Localiser le fichier de configuration de l'auteur

Le fichier de configuration peut ĂȘtre traduit, il suffit d'en crĂ©er une copie traduite Ă  cet endroit :

website/i18n/[locale]/docusaurus-plugin-content-blog/authors.yml

Un auteur, qu'il soit déclaré par le front matter ou par la carte des auteurs, doit avoir un nom ou un avatar, ou les deux. Si tous les auteurs d'un message n'ont pas de noms, Docusaurus affichera leurs avatars de maniÚre compacte. Consultez cet article de test pour en connaßtre l'effet.

Génération de flux

Les flux RSS nécessitent que l'email de l'auteur soit défini pour que l'auteur apparaisse dans le flux.

Temps de lecture​

Pour chaque article du blog, Docusaurus génÚre une estimation du temps de lecture, basé sur le nombre de mots. Une option permet de personnaliser cette fonctionnalité.

docusaurus.config.js
export default {
presets: [
[
'@docusaurus/preset-classic',
{
blog: {
showReadingTime: true, // S'il est défini à false, le "x min read" ne sera pas affiché
readingTime: ({content, frontMatter, defaultReadingTime}) =>
defaultReadingTime({content, options: {wordsPerMinute: 300}}),
},
},
],
],
};

Le callback readingTime reçoit trois paramÚtres : le texte du contenu du blog sous forme de chaßne de caractÚres, le front matter sous forme d'un enregistrement de clés de chaßne de caractÚres et de leurs valeurs, et la fonction de temps de lecture par défaut. Il renvoie un nombre (temps de lecture en minutes) ou undefined (pour désactiver le temps de lecture pour cette page).

Le temps de lecture par dĂ©faut est capable d'accepter des options supplĂ©mentaires : wordsPerMinute comme un nombre (par dĂ©faut : 300) et wordBound comme une fonction qui transforme une chaĂźne de caractĂšres en boolĂ©en. Si la chaĂźne passĂ©e Ă  wordBound doit ĂȘtre un mot liĂ© (espaces, tabulations et sauts de ligne par dĂ©faut), la fonction doit retourner true.

astuce

Utilisez le callback pour tous vos besoins de personnalisation :

DĂ©sactiver le temps de lecture sur une page :

docusaurus.config.js
export default {
presets: [
[
'@docusaurus/preset-classic',
{
blog: {
showReadingTime: true,
readingTime: ({content, frontMatter, defaultReadingTime}) =>
frontMatter.hide_reading_time
? undefined
: defaultReadingTime({content}),
},
},
],
],
};

Utilisation :

---
hide_reading_time: true
---

Cette page n'affichera plus les stats de temps de lecture !

Flux​

Vous pouvez générer des flux RSS / Atom / JSON en passant feedOptions. Par défaut, les flux RSS et Atom sont générés. Pour désactiver la génération de flux, définissez feedOptions.type à null.

type FeedType = 'rss' | 'atom' | 'json';

type BlogOptions = {
feedOptions?: {
type?: FeedType | 'all' | FeedType[] | null;
title?: string;
description?: string;
copyright: string;
language?: string; // possible values: http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes
limit?: number | false | null; // defaults to 20
/** Permet le contrĂŽle de la construction des BlogFeedItems */
createFeedItems?: (params: {
blogPosts: BlogPost[];
siteConfig: DocusaurusConfig;
outDir: string;
defaultCreateFeedItems: (params: {
blogPosts: BlogPost[];
siteConfig: DocusaurusConfig;
outDir: string;
}) => Promise<BlogFeedItem[]>;
}) => Promise<BlogFeedItem[]>;
};
};

Exemple d'utilisation :

docusaurus.config.js
export default {
// ...
presets: [
[
'@docusaurus/preset-classic',
{
blog: {
feedOptions: {
type: 'all',
copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc.`,
createFeedItems: async (params) => {
const {blogPosts, defaultCreateFeedItems, ...rest} = params;
return defaultCreateFeedItems({
// ne conserve que les 10 articles de blog les plus récents dans le flux
blogPosts: blogPosts.filter((item, index) => index < 10),
...rest,
});
},
},
},
},
],
],
};

Les flux peuvent ĂȘtre trouvĂ©s sur :

https://example.com/blog/rss.xml

FonctionnalitĂ©s avancĂ©es​

Mode Blog uniquement​

Vous pouvez exécuter votre site Docusaurus sans page d'accueil dédiée, et utiliser la liste des articles de votre blog comme page d'index. Définissez routeBasePath comme étant '/' pour servir le blog via la route racine example.com/ au lieu de la sous-route example.com/blog/.

docusaurus.config.js
export default {
// ...
presets: [
[
'@docusaurus/preset-classic',
{
docs: false, // Facultatif : dĂ©sactive le plugin docs
blog: {
routeBasePath: '/', // Sert le blog Ă  la racine du site
/* autres options du blog */
},
},
],
],
};
attention

N'oubliez pas de supprimer la page d'accueil existante Ă  ./src/pages/index.js sinon il y aura deux fichiers correspondant Ă  la mĂȘme route !

astuce

Il y a aussi un « mode Docs-uniquement Â» pour ceux qui ne veulent utiliser que les Docs. Lisez le Mode Docs uniquement pour des instructions dĂ©taillĂ©es ou une explication plus Ă©laborĂ©e de routeBasePath.

Blogs multiples​

Par dĂ©faut, le thĂšme classique ne supporte qu'un seul blog par site et n'inclut donc qu'une seule instance du plugin blog. Si vous souhaitez avoir plusieurs blogs sur un seul site web, c'est cependant possible ! Vous pouvez ajouter un blog supplĂ©mentaire en spĂ©cifiant un autre plugin de blog via l'option plugins dans docusaurus.config.js.

DĂ©finissez routeBasePath avec l'URL Ă  laquelle vous souhaitez que votre deuxiĂšme blog soit accessible. Notez que routeBasePath doit ĂȘtre diffĂ©rent du premier blog sinon il pourrait y avoir une collision de chemins d'accĂšs ! DĂ©finissez aussi path avec le chemin du rĂ©pertoire contenant les entrĂ©es de votre second blog.

Comme décrit pour les plugins multi-instance, vous devez assigner un ID unique à chaque plugin.

docusaurus.config.js
export default {
// ...
plugins: [
[
'@docusaurus/plugin-content-blog',
{
/**
* NĂ©cessaire pour tout plugin multi-instance
*/
id: 'second-blog',
/**
* Route URL pour la section blog de votre site.
* *NE PAS* inclure de slash Ă  la fin.
*/
routeBasePath: 'my-second-blog',
/**
* Chemin d'accÚs aux données sur le systÚme de fichiers par rapport au répertoire du site.
*/
path: './my-second-blog',
},
],
],
};

À titre d'exemple, nous hĂ©bergeons un deuxiĂšme blog ici.