summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/index.html1
-rw-r--r--docs/posts/2023-11-07-je-n-ai-pas-ecrit-mon-billet.html28
2 files changed, 28 insertions, 1 deletions
diff --git a/docs/index.html b/docs/index.html
index b5007b0..36b40d6 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -39,6 +39,7 @@
</header>
<div>
<ul>
+ <li><a href="/posts/2023-11-07-je-n-ai-pas-ecrit-mon-billet.html">02-Je n’ai pas écrit mon billet</a></li>
<li><a href="/posts/2023-11-05-intimite-du-chercheur.html">01-Définir l’intimité du chercheur</a></li>
<li><a href="/posts/2023-11-03-creation-du-site.html">00-Construire un générateur de carnet</a></li>
</ul>
diff --git a/docs/posts/2023-11-07-je-n-ai-pas-ecrit-mon-billet.html b/docs/posts/2023-11-07-je-n-ai-pas-ecrit-mon-billet.html
index 41b5b88..b12134f 100644
--- a/docs/posts/2023-11-07-je-n-ai-pas-ecrit-mon-billet.html
+++ b/docs/posts/2023-11-07-je-n-ai-pas-ecrit-mon-billet.html
@@ -37,7 +37,33 @@
<div class="content">
<p>Hier soir, je me suis installé derrière mon clavier avec l’envie d’écrire un nouveau billet dans ce carnet très vide.</p>
<p>Sauf que je ne l’ai pas fait.</p>
-<p>En ouvrant mon éditeur de texte j’ai décidé de reregarder la structure du site web, et une chose en enchaîne une autre, je n’ai même pas créé le fichier pour y écrire le billet.</p>
+<p>En ouvrant mon éditeur de texte j’ai décidé de regarder à nouveau la structure du site web, et une chose en entraînant une autre, je n’ai même pas créé le fichier pour y écrire le billet. Mon constat est le suivant : certaines informations, notamment les métadonnées, ont été rentrées en « dur » dans le <em>template</em> (ça allait plus vite pour regarder le résultat). Or la plupart des générateurs de site statique proposent un fichier de configuration dans lequel les informations relatives au site généré sont insérées. De cette manière, le <em>template</em> reste générique et s’adapte à différents contenus. Par exemple, si le titre du site web est appelé à plusieurs endroits dans les <em>templates</em>, il n’y a plus besoin d’aller changer cette information partout, au risque d’en oublier une ! Avec un fichier de configuration il devient possible de ne modifier les informations qu’à cet endroit.</p>
+<p>Heureusement pour moi, Pandoc intègre cette fonctionnalité avec le paramètre <code>metadata-file=NOM-DU-FICHIER</code> que l’on peut intégrer dans une commande Pandoc aussi simplement que cela. Ainsi, j’ai ajouté un fichier <code>metadata.yml</code> à la racine des sources du site et j’ai modifié les <em>templates</em> pour qu’ils prennent en charge les données du fichier YAML plutôt que mes données en dur.</p>
+<p>Un <code>make html</code> plus tard je me rends compte d’un autre problème (qui était déjà connu mais je l’ai laissé de côté jusqu’à ce soir) : la commande <code>make html</code> ne recompile pas les pages du site quand je modifie les <em>templates</em>, ce qui est embêtant. On peut se retrouver, comme ce fût le cas lors des étapes de construction du générateur, avec une modification dans un éléments <code>partials</code>, comme le menu de navigation en haut de toutes les pages, prise en compte uniquement dans les pages recompilées. Les fichiers HTML des pages qui ne sont pas recompilées n’ont pas changé et, en conséquence, le menu diffère d’une page à l’autre.</p>
+<p>J’ai discuté de ce problème avec Louis-Olivier aujourd’hui, il y a également été confronté. La solution repose sur le fonctionnement de Make. Les instructions inscrites dans le Makefile (appelons les <em>recettes</em> comme le fait Louis-Olivier) dépendent d’une série de dépendances. En lisant la recette, Make vérifie l’état des dépendances avant d’exécuter les différentes instructions.</p>
+<p>Une dépendance d’une recette peut être une autre recette, que l’on nomme <em>sous-recette</em> pour s’y retrouver, qui elle-même peut avoir des dépendances et des instructions. C’est ce principe que nous avons appliqué à nos recettes pour générer des pages HTML qui sont recompilées lorsque les <em>templates</em> sont modifiés.</p>
+<p>Prenons un exemple dans le Makefile :</p>
+<pre><code>docs/index.html: src/index.md templates/index.html $(metadata_site)
+ @ echo &quot;Production de l&#39;index.&quot;
+ @ pandoc \
+ $&lt; \
+ $(PANDOCFLAGS) \
+ --template templates/index.html \
+ --output $@
+ @ echo &quot;L&#39;index est construit.&quot;</code></pre>
+<p>La recette est construite comme suit : le premier élément passé à la recette est son nom <code>docs/index.html</code> ; ensuite viennent les dépendances après les <code>: src/index.md templates/index.html $(metadata_site)</code>. Jusque-là nous avions seulement <code>src/index.md</code> qui pointait vers la source de l’index. Si l’index était modifié, Make se chargeait de recompiler. Le procédé est le même pour le template en ajoutant simplement la dépendance <code>templates/index.html</code>.</p>
+<p>Il y a quand même un petit “mais”.</p>
+<p>Le <code>templates/index.html</code> dépend lui aussi de plusieurs <code>partials</code>.</p>
+<p>Dans la continuité de la recette créée pour produire l’index.html, il nous faut une sous-recette pour indiquer à Make les modifications faites dans les différents <code>partials</code>. On crée une variable <code>index-partials</code> pour lui passer tous les fichiers concernés (comme ça la sous-recette est plus facile à lire), puis on passe juste l’instruction <code>touch</code> à la sous-recette. <code>touch</code> ne fait que modifier la date de modification du fichier qui sert d’information à Make pour savoir quoi recompiler.</p>
+<pre><code># sous-recette pour le template de l&#39;index
+index-partials = \
+ templates/partials/footer.html \
+ templates/partials/head.html \
+ templates/partials/header.html \
+ templates/partials/nav.html
+
+templates/index.html: $(index-partials)
+ @ touch $@</code></pre>
</div>
</div>
<footer>