Sphinx construit généralement de manière incrémentielle la documentation, ce qui signifie que seuls les fichiers qui ont été modifiés seront régénérés. Je me demande s'il existe un moyen de dire à Sphinx de toujours régénérer certains fichiers qui n'ont peut-être pas été directement modifiés mais qui sont influencés par des changements dans d'autres fichiers. Plus spécifique: existe-t-il un moyen de dire à Sphinx de toujours régénérer les fichiers contenant une certaine directive? La documentation sur laquelle je travaille repose sur la possibilité de collecter et de reformater des informations provenant d'autres pages à l'aide de directives assez fréquemment. Une construction propre (make clean && make [html]
) et/ou complète (sphinx-build -a
) prend beaucoup plus de temps qu'une construction incrémentielle. De plus, le suivi manuel des fichiers contenant la directive peut s'avérer compliqué. La documentation est rédigée par plus de 10 auteurs ayant une expérience limitée dans la rédaction de la documentation Sphinx.Toujours régénérer les documents Sphinx contenant une directive spécifique
Mais même dans les scénarios moins complexes que vous pourriez faire face à ce « problème »: Par exemple sphinx.ext.todo contient une directive appelée todolist
qui recueille todos de toute la documentation. Si je crée un fichier contenant tous les todos de ma documentation (essentiellement un document vide contenant uniquement la directive todolist
), la liste n'est pas mise à jour jusqu'à ce que je fasse une nouvelle génération ou que je modifie le fichier.
Si vous voulez tester vous-même: Créer une documentation avec sphinx-quickstart
et respectez les valeurs par défaut, sauf pour
'> todo: write "todo" entries that can be shown or hidden on build (y/n) [n]: y'
Ajouter un fichier dans source
appelé todos.rst
et référence ce fichier à partir index.rst
.
Contenu du index.rst
:
Welcome to sphinx-todo's documentation!
=======================================
.. toctree::
:maxdepth: 2
todos
.. todo::
I have to do this
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
Contenu de todos.rst
:
.. _`todos`:
List of ToDos
=============
.. todolist::
En supposant que vous utilisez la sortie html
vous remarquerez que todos.html
ne changera pas lorsque vous ajoutez à todos index.html
.
tl; dr: Comment - si possible - dois-je inclure des fichiers contenant une directive spécifique (par exemple todolist
) dans une construction incrémentale du Sphinx sans qu'il soit nécessaire de garder une trace d'eux manuellement?
Merci pour la réponse. Votre réponse supporte mon impression actuelle que vous devez tout construire ou spécifier directement les fichiers que vous voulez reconstruire. J'espérais un petit mot-clé «liste blanche» caché pour les directives/fichiers ou un pré-traitement des meilleures pratiques (par exemple, before-build-hook) mais cela ne semble pas exister. – aleneum