Create doc with Docusaurus in GitLab Pages
2022-02-25
-
Here the Docusaurus docs et GitLab Pages docs.
-
Create a Docusaurus project
Add to docusaurus.config.js file before themeConfig:
// ...
plugins: [
[
require.resolve("@cmfcmf/docusaurus-search-local"),
{
language: "fr",
}
],
],
themeConfig:
// ...
Create the build and test the search with serve :
- Go in repo
- And start the dev
Custom project
All are in docusaurus.config.js file
- Change the title and tagline
- Change the menu and logo:
- Change the copyright in footer
Change the style with : src/css/custom.css
Here a style generator : Styling layout in Docusaurus.
- Change dark theme:
[data-theme='dark'] {
--ifm-color-primary: #b3dde6;
--ifm-color-primary-dark: #94cfdc;
--ifm-color-primary-darker: #85c8d7;
--ifm-color-primary-darkest: #57b4c8;
--ifm-color-primary-light: #d2ebf0;
--ifm-color-primary-lighter: #e1f2f5;
--ifm-color-primary-lightest: #ffffff;
}
- light theme:
:root {
--ifm-color-primary: #043c48;
--ifm-color-primary-dark: #043641;
--ifm-color-primary-darker: #03333d;
--ifm-color-primary-darkest: #032a32;
--ifm-color-primary-light: #04424f;
--ifm-color-primary-lighter: #054553;
--ifm-color-primary-lightest: #054e5e;
}
Change Doc content
Supress Blog
2 steps
- Delete
blogdirectory - and remove link in
docusaurus.config.jsfile:
// header menu
{to: '/blog', label: 'Blog', position: 'left'},
// in footer
{
label: 'Blog',
to: '/blog',
},
Produce content
Add a new section
- For exemple create a
docs/efx-docdirectory - Create a file :
_category_.jsonto the root of efx-doc directory :
- And add a markdown
demo.mdfile
---
sidebar_position: 1
---
# Ceci est un H1
## Ceci est un H2
### Ceci est un H3
**Texte en gras**
*Texte en italique*
Ceci est une liste :
* Lorem
* ipsum
> Ceci est un citation
:::danger Ceci est le titre du bloc !
Ceci est un blog de **danger**
:::
:::success
Ceci est un blog de **success**
:::
- Doc are available :
Add a extension theme syntax add-on, e.g. php
- Open
docusaurus.config.jsand add:
prism: {
theme: lightCodeTheme,
darkTheme: darkCodeTheme,
// Ajoutons le php avec cette ligne
additionalLanguages: ['php'],
},
GitLab Pages
Create the repo
Create a free account on GitLab.com
- Create a GitLab repo
- Do a
git pushon it
Add a pipe deployment
La publication de notre Docusaurus sera piloter par un pipeline GitLab CI (Et si les pipeline CI/CD vous interesse, vous pouvez jetter un cop d’oeil à ma formation sur le sujet)
- Création d’un fichier
.gitlab-ci.ymlà la racine du projet, avec le contenu suivant:
image: node:15.12-alpine3.13
stages:
- test
- deploy
test:
stage: test
script:
- npm install --force
- npm run build
pages:
stage: deploy
script:
- npm install --force
- npm run build
- mv ./build ./public
artifacts:
paths:
- public
only:
- pages
-
Ce fichier, va faire les choses suivantes :
-
Lors d’un push: lancer un
npm run buildpour vérifier que le build fonctionne bien -
Lors d’un push, ou merge request sur la branche pages: lancer le build et générer un artefact avec la version statique de notre Docusaurus
-
On commit et on push
La branche pages
- Créons la branche pages depuis GitLab (cela devrait immédiatement lancer le pipeline de déploiement)
- Une fois la CI/CD exécutée, dans Settings > Pages, activons le https et faisons un save changes
- Et testons la page (l’obtebtion du certificat pour le HTTPS peut ne pas être immédiat !)
Adpatons le projet à notre dépot GitLab
- Modifions notre fichier
docusaurus.config.jsavec les adresses de notre dépot
const config = {
title: 'YoanDev Doc',
tagline: 'Documenter c\'est cool !',
url: 'https://yoandev.co.gitlab.io',
baseUrl: '/yoandev-doc-prepa/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
favicon: 'img/favicon.ico',
organizationName: 'yoandev', // Usually your GitHub org/user name.
projectName: 'yoandev-doc-prepa', // Usually your repo name.
presets: [
[
'classic',
/** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
sidebarPath: require.resolve('./sidebars.js'),
// Please change this to your repo.
editUrl: 'https://gitlab.com/yoandev.co/yoandev-doc-prepa/-/edit/master/',
},
blog: {
showReadingTime: true,
// Please change this to your repo.
editUrl:
'https://gitlab.com/yoandev.co/yoandev-doc-prepa/-/edit/master/',
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
}),
],
],
- Et faisons une Merge Request de Master vers Pages, et constatons le résultat 🚀
BONUS : Ajoutons un moteur de recherche
Il existe des solutions plus performante pour mettre en place un moteur de recherche, mais celle-ci à le bon gout de fonctionner simplement, rapidement, y compris pour un dépot privé (et donc un GitLab Pages non accessible à tous le monde)
- Installons la dépendance docusaurus-serach-local
- Ajoutons la recherche dans le fichier
docusaurus.config.js
// ...
plugins: [
[
require.resolve("@cmfcmf/docusaurus-search-local"),
{
language: "fr",
}
],
],
themeConfig:
// ...
- Et finalement testons
- Il ne nous reste qu’à commit + push + MR sur la branche pages !
Conclusions
Nous venons de voir comment mettre en ligne hyper simplement un site statique de documentation à l’aide de plusieurs outils : Docusaurus, Gitlab CI et GitLab Pages !
Vous n’avez plus aucunes excuse pour ne pas écrire et partager de la documentations avec vos collègues (vous devriez vous faire des plateformes de doc !), pour vos clients ou vos utilisateurs !
Nous allons poursuivre prochainement notre découverte des outils de génération de sites statique (jamstack) avec un générateur super cool pour un blog… rendez vous bientôt !





