Utiliser le livereload de Zola dans Gitpod
Lecture 3 min. âą
Bonjour Ă toutes et tous đ
Une fois nâest pas coutume, un trĂšs court article.
Si vous me suivez sur twitter, vous avez sûrement remarqué que je parle beaucoup de Zola.
Je suis en train de réécrire mon blog avec, vous ĂȘtes peut-ĂȘtre dâailleurs sur le nouveau blog en ce moment. ^^
Le problĂšme est que Zola est trĂšs opinated, et une des positions quâil a pris câest le livereload câest en localhost, point barre ! đș
Zola injecte une balise de livereload qui expose un livereload en http:///:1024 et il est impossible de configurer quoique ce soit.
<script src="/livereload.js?port=1024&mindelay=10"></script>Or Gitpod expose chacun des port sortant du container sous la forme dâune URL ayant la nomencalture suivante:
https://<port>-<namespace>-<project>-<internal-domain>.gitpod.ioExemple:
https://1024-akanoa-blogv2-jr01424va03.ws-eu67.gitpod.ioToute lâastuce va ĂȘtre de devoir modifier lâURL du livereload en:
<script src="https://1024-akanoa-blogv2-jr01424va03.ws-eu67.gitpod.io?port=443&mindelay=10"></script>Le problĂšme câest que lâon a pas la main sur lâinjection de la balise de script.
Heureusement, il existe une solution!
Je me suis inspiré de cette issue.
Bon, on peut configurer le host du livereload dynamiquement, câest cool ! đ
Maintenant comment fait-on pour rĂ©cupĂ©rer lâURL du port ?
Et bien ici aussi, il y a une solution !
Gitpod expose une commande:
gp url 1024Ceci va nous donner la valeur de lâURL dâexposition du port 1024.
Bon on avance, maintenant comment, faire pour que Zola comprennent que le port 1024 on en veut pas?
Et bien, il faut se rendre dans le master template de votre Zola.
Et la toute, toute fin, rajouter ceci
<html>
<head>
</head>
<body>
<script>
window.LiveReloadOptions = {
https: true,
host: '1024-akanoa-blogv2-jr01424va03.ws-eu67.gitpod.io',
port: 443,
};
</script>
</body>
</html>Avec ça déjà ça devrait marcher pour le livereload. (changez le domaine avec votre retour de la command gp url 1024)
Pour lâinstant câest statique, mais on va le rendre dynamique.
Pour cela un peu de bash
export LIVERELOAD_HOST=$(gp url 1024)
export LIVERELOAD_HOST=${LIVERELOAD_HOST:8}Ces deux commandes rĂ©cupĂšre lâURL et le transforme en domaine en retirant le âhttps://â qui est devant.
Maintenant nous allons automatiser la manip:
Dans le fichier .gitpod.yml, rajoutez ou modifiez votre init task
tasks:
- command: >
export LIVERELOAD_HOST=$(gp url 1024) &&
export LIVERELOAD_HOST=${LIVERELOAD_HOST:8} &&
zola serve --base-url /
ports:
- port: 1024
onOpen: ignoreOn ignore aussi la preview du 1024, câest du websocket, il nây a rien a preview ^^
Ensuite on revient dans master template de votre Zola.
<html>
<head>
</head>
<body>
{% set livereload = get_env(name="LIVERELOAD_HOST", default="") -%}
{% if livereload != "" -%}
<script>
window.LiveReloadOptions = {
https: true,
host: '{{ livereload }}',
port: 443,
};
</script>
{% endif -%}
</body>
</html>On définit aussi plusieurs choses:
- On récupÚre le domaine du port 1024 depuis la variable
LIVERELOAD_HOST - On vĂ©rifie que cette variable existe et nâest pas vide, cela permet en prod de ne pas afficher cette balise de script
- On template
Et voilĂ , câest fini, Ă vous les joies du livereload dans Gitpod avec Zola. đ
CâĂ©tait trĂšs court, mais si ça peut aider du monde ^^
Je vous remercie de votre lecture et Ă la prochaine đ