Development #68827
Livereload pour faciliter le développement de thèmes
100%
Description
Avec iwatch -r -t '.scss' -e modify -c "make css" .
, on a la possibilité de recompiler automatiquement les thèmes lorsqu'un changement est effectué.
Néanmons, on est toujours obligé de marteler ctrl-R dans le navigateur, ce qui est pénible pour plusieurs raisons :
- c'est lent (plusieurs secondes le temps de changer de fenètre, que le serveur regénère la page, etc.)
- ça demande une opération manuelle
- ça réinitialise potentiellement des élements d'UI qu'on est en train de styler (par exemple une tooltip, une modale, une page précise d'un formulaire…)
On peut faire mieux que ça en intégrant un client et un serveur livereload en développement. Pour les personnes qui ne connaissent pas, ça fonctionne comme ça :
1. Le client livereload est un petit bout de javascript chargé dans la page qui ouvre une connexion websocket avec
2. Le server livereload, généralement lancé en ligne de commande, qui surveille un dossier et notifie le client des changements
3. Lorsqu'un changement est notifié, le client recharge automatiquement les ressources affectées dans le navigateur. Pour du CSS, la mise à jour est immédiate, et ne nécessite pas de recharger la page. Pour d'autres ressources (images, HTMl, javascript…), le client procède généralement à un rechargement complet de la page
Pour essayer en local, vous pouvez faire un sudo apt install python3-livereload iwatch
et appliquer les modifications suivantes:
dans /etc/nginx/sites-enabled/combo
, rajouter:
# pour mettre en place le proxy vers le javascript et le websocket de livereload location /livereload { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://127.0.0.1:35729; } location /livereload/ { proxy_pass http://127.0.0.1:35729/; }
Dans combo, appliquer le patch joint.
Dans publik-base-theme, appliquer le patch joint.
Ensuite, depuis publik-base-theme, lancer ./compile-and-reload.sh
, charger une page de combo dans le navigateur (une connexion websocket doit être visible dans les logs réseaux du navigateurs). À partir de là, les modifications effectuées sur les fichiers scss sont normalement répercutés immédiatement dans le navigateur.
Fichiers
Sous-tâches
Révisions associées
Historique
Mis à jour par Corentin Séchet il y a plus d'un an
Pour éviter de modifier le code et la configuration Nginx, j'ai fait une petite extension pour Firefox qui fait du rafraîchissement automatique en remplaçant les réponses aux requêtes par le contenu de fichiers en local, l'avantage étant que ça permet aussi d'appliquer le style local sur les sites en recette ou en prod. Je vais ajouter ça dans la doc.
Mis à jour par A. Berriot il y a plus d'un an
Corentin Séchet a écrit :
Pour éviter de modifier le code et la configuration Nginx, j'ai fait une petite extension pour Firefox qui fait du rafraîchissement automatique en remplaçant les réponses aux requêtes par le contenu de fichiers en local, l'avantage étant que ça permet aussi d'appliquer le style local sur les sites en recette ou en prod. Je vais ajouter ça dans la doc.
Je suis curieuse de voir ça, mais j'aimerai aussi éviter de passer par une extension (je teste aussi les thèmes sous Chrome ou Chromieum par exemple, gérer ça côté javascript permet de tester de la même manière sous tous les navigateurs)
Mis à jour par A. Berriot il y a plus d'un an
- Fichier Peek 2022-09-07 21-13.mp4 Peek 2022-09-07 21-13.mp4 ajouté
Je réalise que j'avais même pas inclus la démo du machin
Mis à jour par Corentin Séchet il y a plus d'un an
- Statut changé de Nouveau à Solution validée
J'aurais juste mis à LIVERELOAD_ENABLED à false par défaut, mais ça me parait pas non plus d'une importance capitale.
Mis à jour par Frédéric Péters il y a plus d'un an
Comme ça va tourner il me semble que le paquet installé va se trouver avec LIVERELOAD_ENABLED à True (parce que debian/settings.py qui modifie la valeur de DEBUG est joué plus tard); ça me rassurerait de l'avoir explicitement à False.
Côté publik-base-theme, #!/bin/env python
plutôt écrire #! /usr/bin/python3
Mis à jour par A. Berriot il y a plus d'un an
Frédéric Péters a écrit :
Comme ça va tourner il me semble que le paquet installé va se trouver avec LIVERELOAD_ENABLED à True (parce que debian/settings.py qui modifie la valeur de DEBUG est joué plus tard); ça me rassurerait de l'avoir explicitement à False.
Côté publik-base-theme,
#!/bin/env python
plutôt écrire#! /usr/bin/python3
Oui tu as raison, en fait je n'avais pas (encore) trouvé comment surcharger localement mes settings, donc le LIVERELOAD_ENABLED = DEBUG
était un hack autour de ça. Pour moi, on peut définitivement le mettre à false et laisser les personnes qui font des inté graphiques l'activer.
Je vais lancer les patches dans les autres repos.
Mis à jour par A. Berriot il y a plus d'un an
- Fichier 0001-misc-livereload-setup-68827.patch 0001-misc-livereload-setup-68827.patch ajouté
- Statut changé de Solution validée à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par A. Berriot il y a plus d'un an
Voilà, tout est prêt à être review correctement:
- https://dev.entrouvert.org/issues/70110
- https://dev.entrouvert.org/issues/70112
- et le patch de ce ticket
Mis à jour par Frédéric Péters il y a plus d'un an
- Statut changé de Solution proposée à Solution validée
(sur le message de commit ça pourrait être "misc: add livereload setup (#68827)", notre forme conventionnelle commençant par un verbe)
Mis à jour par A. Berriot il y a plus d'un an
- Statut changé de Solution validée à Résolu (à déployer)
commit 2d45b972b97806f5257ae644263015eb47826871 Author: Agate Berriot <aberriot@entrouvert.com> Date: Tue Oct 11 15:37:10 2022 +0200 misc: add livereload setup (#68827)
Mis à jour par Transition automatique il y a plus d'un an
- Statut changé de Résolu (à déployer) à Solution déployée
misc: add livereload setup (#68827)