mintlify/multirepo-action, copie la documentation d’un nombre quelconque de référentiels enfants dans un seul référentiel de documentation parent. Elle fusionne la navigation de chaque enfant dans un unique docs.json, afin que Mintlify déploie le parent comme n’importe quel autre site à référentiel unique.
Utilisez l’action lorsque votre documentation est répartie sur de nombreux référentiels et que vous souhaitez gérer la liste des sources dans un fichier de configuration plutôt que dans le tableau de bord. Pour combiner des référentiels sans copier de contenu, consultez Projets multi-référentiels.
Fonctionnement
- Récupère chaque référentiel enfant en parallèle, en téléchargeant uniquement le dossier qui contient sa documentation.
- Copie le contenu de chaque enfant dans un dossier de destination du référentiel parent. La destination est aussi le chemin d’URL : un enfant situé dans
apiest donc publié sous/api. - Réécrit les liens relatifs à la racine, les images et les imports de snippets dans les fichiers
.mdet.mdxde l’enfant pour inclure la destination. Par exemple,/guides/startdevient/api/guides/start. - Génère
docs.jsonà partir d’un fichierdocs.base.json, en y fusionnant la navigation, les variables et les redirections de chaque enfant. - Ouvre ou met à jour une pull request avec les modifications, ou les pousse directement.
Prérequis
- Un référentiel parent sur GitHub connecté à votre projet Mintlify
- Un fichier
docs.jsoncontenant un objetnavigationdans chaque référentiel enfant - Pour les référentiels enfants privés, un jeton d’installation de GitHub App ou un jeton d’accès personnel à granularité fine avec
contents: readsur chaque enfant
Configurer l’action
1
Créer une configuration de base
Dans le référentiel parent, renommez L’action remplace chaque
docs.json en docs.base.json. L’action génère docs.json à partir de ce fichier à chaque exécution.Ajoutez une entrée sourceRef à l’endroit où la navigation de chaque enfant doit apparaître. Un sourceRef utilise la même syntaxe que les projets multi-référentiels.docs.base.json
sourceRef par le tableau de navigation de même type de l’enfant. Par exemple, un sourceRef dans tabs devient le navigation.tabs de l’enfant. Un sourceRef dans pages devient les pages de l’enfant, ou ses groups s’il n’a pas de pages.Les enfants sans sourceRef sont ajoutés à la fin des products, tabs, anchors ou dropdowns de premier niveau de la base.2
Lister les référentiels enfants
Créez
.github/mintlify-multirepo.yml dans le référentiel parent..github/mintlify-multirepo.yml
L’action ne copie jamais les fichiers cachés (dotfiles), les liens symboliques,
node_modules ni le docs.json de l’enfant. Seuls les champs navigation, variables et redirects de l’enfant sont fusionnés. Les autres paramètres, comme le thème et les couleurs, proviennent de docs.base.json.3
Ajouter le workflow
Créez Si tous les référentiels enfants sont publics, supprimez l’étape
.github/workflows/multirepo.yml dans le référentiel parent. Cet exemple s’exécute toutes les heures, à la demande et lorsqu’un référentiel enfant envoie un événement docs-updated..github/workflows/multirepo.yml
create-github-app-token et l’entrée token.Par défaut, l’action ouvre ou met à jour une seule pull request avec les modifications. Fusionnez-la pour déployer. Pour autoriser le workflow à ouvrir des pull requests, activez Allow GitHub Actions to create and approve pull requests dans Settings > Actions > General du référentiel parent. Pour pousser directement les modifications sur la branche, définissez mode: push.4
Facultatif : synchroniser lorsqu'un enfant change
Pour synchroniser dès qu’un référentiel enfant change, ajoutez à chaque enfant un workflow qui notifie le parent. Remplacez
acme/docs par votre référentiel parent. DOCS_DISPATCH_TOKEN doit disposer d’un accès contents: write sur le référentiel parent..github/workflows/notify-docs.yml
Modifier le contenu synchronisé
docs.json à chaque exécution. Modifiez le contenu dans les référentiels enfants et les paramètres du site dans docs.base.json. Les modifications apportées directement aux fichiers synchronisés dans le référentiel parent, y compris via l’éditeur web, sont écrasées lors de la synchronisation suivante.
Lorsque vous retirez un enfant de .github/mintlify-multirepo.yml, l’action supprime son dossier lors de l’exécution suivante.
Créer des liens entre enfants
[Start](/quickstart) dans un enfant avec destination: api devient donc /api/quickstart.
L’action ne modifie pas les liens qui pointent déjà vers la destination d’un autre enfant. Par exemple, [SDK](/sdks/js/install) reste inchangé lorsque sdks/js est la destination d’un autre enfant. L’action ne réécrit pas les liens à l’intérieur des blocs de code.
Pour connaître toutes les entrées, sorties et options de jeton, consultez le README de l’action.