Le contexte
La prévisualisation permet d’avoir un retour immédiat sur le contenu que l’on édite.
Cela permet aussi de vérifier avant de publier.
Le problème
Sur un site type WordPress, on édite et on lit dans le même système.
Sur Osuny, on édite dans le back-office en Ruby on Rails, et quand on publie, Osuny envoie sur Github / Gitlab, ce qui déclenche une compilation Hugo et une mise à jour du site. Le tout prend quelques minutes.
La prévisualisation peut se faire selon 2 options :
- soit essayer de faire instantanément le processus qui dure quelques minutes pour voir en vrai, avec Hugo, le rendu
- soit essayer de simuler le rendu
Nous travaillons depuis le début dans l’option 2, parce que la première ne nous paraît pas faisable. Même si on arrivait à ramener à 30 secondes le flux, ça fait une expérience utilisateur assez mauvaise.
Et cela implique une infrastructure parallèle à la production, un genre de staging de chaque site, juste pour les prévisualisations.
L’option 2 nécessite de reconstituer le balisage HTML dans Osuny.
Nous en avons de toutes façons besoin, parce que les blocs permettent de publier les articles des extranets, qui sont gérés avec Ruby on Rails.
Là où la situation se complique, c’est pour s’adapter au style de chaque site Web.
Nous avons codé un système qui récupère le style CSS et les assets (par exemple les typos) afin de ressembler énormément au rendu final.
En revanche, si le site Web a fait l’objet de modifications du DOM, c’est à dire d’un balisage HTML différent du thème Osuny, nous n’avons pas de solution pour le récupérer automatiquement.
Les pistes d’amélioration
-
On peut déjà vérifier que la prévisualisation est aussi proche que possible du site d’exemple, et reproduit correctement tout le balisage.
-
On pourrait imaginer une récupération du template, mais il faudrait soit le faire à la main, soit gérer une transcription entre Hugo et ERB. Pas simple du tout, d’autant plus qu’il y a de nombreux partials inclus.
-
On peut essayer la voie 1.
-
On peut expliquer pourquoi ce n’est pas parfait, et les enjeux de précompilation.