Aller au contenu
DocPensieve

DocPensieve — Documentation & Magical Memory

DocPensieve

Vos fichiers Markdown et MDX deviennent un site statique. Aucun runtime à charger, une version par branche, des données structurées déduites du frontmatter.

Nouveautés de la 0.4

  • Un menu qui se repliefoldedSidebar, et le menu de la documentation replié au-dessus du contenu sur écran étroit.
  • Un panneau de liens dans l'en-tête — une entrée headerLinks à colonnes.
  • Un composant de menuMenu, posé n'importe où dans une page, replié sur mobile.
  • Des admonitions — six types livrés, et les vôtres déclarés dans la configuration.
  • Un en-tête collant ou nonstickyHeader, pour rendre sa hauteur au texte.
  • Des icônes issues d'un jeusimple-icons:github, intégrées à la génération comme vos propres fichiers.
  • Un site en plusieurs langues — une traduction par version, servie sous son code, avec la coquille dans cette langue.

Toutes les nouveautés · Migrer de la 0.3 vers la 0.4

En trois commandes

npx docpensieve init mon-site
cd mon-site
npx docpensieve dev

La première pose quelques questions — détaillées plus bas — puis écrit une configuration et un dossier de documentation ; la dernière ouvre un serveur qui régénère à chaque enregistrement.

Rien d'autre à installer : la générationTransformer les sources en pages HTML prêtes à servir. tourne sur votre machine, et le site produit ne demande qu'un hébergeur de fichiers.

Ce que vous obtenez
  • dist
    • index.html
    • versions.json
    • versions
      • v1.0
        • index.html
        • assets

Ce que demande init

init met le projet en place en cinq questions. Entrée garde la valeur par défaut, indiquée dans le tableau ; une réponse qu'il ne comprend pas est reposée.

$ npx docpensieve init mon-site
Project name [My documentation]: Acme docs
Public URL of the site (optional): https://acme.github.io/docs
First version [1.0]:

CSS framework:
  1. tailwind — Tailwind CSS — ships with the tool, nothing to install
  2. custom — custom theme, light stylesheet, your own classes in theme/
Your choice [1-2]: 2
Install DocPensieve's documentation in the site? [Y/n]:
QuestionDéfautCe que votre réponse changeRépondu à l'avance par
Nom du projetMy documentationLe nom dans l'en-tête, dans les titres de page et dans les données structurées.--name
Adresse publique du siteaucuneLes liens canoniques et les données structurées. Son chemin devient le préfixe de déploiement : https://acme.github.io/docs sert le site sous /docs/. À laisser vide si besoin.--site-url
Première version1.0Le dossier de vos pages, docs/v1.0/, et la version dans les adresses. 1.0 et v1.0 sont la même réponse.--version-name
Framework CSStailwindtailwind compile les utilitaires employés par vos pages, sans rien de plus à installer. custom est une feuille simple : vos classes vivent dans un dossier theme/.--theme
Documentation de DocPensieveouiOui : cette documentation rejoint votre menu, dans une section DocPensieve correspondant à votre version. Non : le site démarre avec vos seules pages.--minimal, pour non

Ce qu'il écrit, selon vos réponses

FichierÉcrit quand
docpensieve.config.mjstoujours — toutes les options, chacune commentée
docs/v1.0/index.md et docs/v1.0/01-guide/01-installation.mdtoujours — une page d'accueil et une première page
.gitignoretoujours — le dossier de sortie y est ajouté
docs/v1.0/99-docpensieve/documentation : oui — à supprimer quand vous n'en avez plus besoin
theme/custom.cssthème : custom — là où vont vos propres classes
theme/99-docpensieve.cssthème : custom et documentation : oui — les classes de ses exemples

Les réponses atterrissent dans docpensieve.config.mjs : le nom, l'adresse et le thème s'y changent ensuite.

Dans un script ou en intégration continue, --yes accepte tous les défauts et les options répondent au reste :

npx docpensieve init mon-site --yes --name "Acme docs" --theme custom --minimal

Là où le terminal ne peut pas recueillir de réponses, init le dit, puis s'en tient aux options et aux défauts.

Ce que cela coûte au lecteur

0%
Runtime JavaScript
0%
Hydratation
100%
HTML servi tel quel
100%
Une feuille par version

Deux cadrans à zéro, et c'est voulu : React sert à la génération, pas à l'affichage. Ce qui parvient au lecteur, c'est du balisage et une feuille de style — et, sur ce site, les quelques lignes de son bouton clair / sombre.

Ce qui distingue l'outil

Rien à charger

Aucune hydratation, aucun paquet à télécharger avant de lire. Une page reste lisible dans dix ans, parce que rien ne peut cesser de fonctionner.

Une version par branche

Chaque version publiée vit sur sa branche orpheline, avec son historique. Revenir à une ancienne version ne demande pas de la regénérer.

Le frontmatter suffit

Titre, description, auteurs et dates produisent le JSON-LD, le fil d'Ariane et les métadonnées. Rien à écrire deux fois.

Rien n'échoue en silence

Une valeur inconnue, un parent manquant, un lien mort : chacun arrête la génération avec un message et une piste.

La qualité, en chiffres

Ces jauges ne décorent pas : ce sont les mesures du dépôt, relevées à la main — rien ne les met à jour tout seul. La couverturePart des lignes exécutées par la suite de tests. et le typageTypeScript vérifie les JSDoc du code source et des tests. sont contrôlés à chaque poussée.

Ce qui ne se mesure pas ne s'améliore pas — et ce qui ne se vérifie pas à chaque fois se dégrade.

Couverture des lignes97%
Couverture des branches87%
Typage du code et des tests100%

Une page, de bout en bout

---
title: Installation
description: Installer l'outil.
---

# Installation

Node.js 22 ou plus récent.

<Tooltip text="Crée un projet complet">init</Tooltip>
met la configuration en place.

Le fichier est lu, son frontmatter détaché, son contenu compilé en HTML. Les composants sont rendus à la génération : Tooltip devient deux éléments et une règle de style, sans une ligne de script.

Le titre alimente la balise <title>, la description les métadonnées, et les deux ensemble le JSON-LD. Le nom du fichier donne l'adresse, son dossier la place dans le menu.

Rien de tout cela ne demande de configuration : écrire une page suffit.