Projet

Général

Profil

Development #68827

Livereload pour faciliter le développement de thèmes

Ajouté par A. Berriot il y a plus d'un an. Mis à jour il y a plus d'un an.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
11 octobre 2022
Echéance:
% réalisé:

100%

Temps estimé:
(Total: 0:00 h)
Patch proposed:
Oui
Planning:
Non

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

publick-base-theme.patch (1,55 ko) publick-base-theme.patch A. Berriot, 08 septembre 2022 09:50
combo.patch (1,21 ko) combo.patch A. Berriot, 08 septembre 2022 09:51
Peek 2022-09-07 21-13.mp4 (2,83 Mo) Peek 2022-09-07 21-13.mp4 Demo A. Berriot, 12 septembre 2022 10:32
0001-misc-livereload-setup-68827.patch (1,22 ko) 0001-misc-livereload-setup-68827.patch A. Berriot, 11 octobre 2022 15:37

Sous-tâches

Publik Installation Développeur - Development #70110: Configuration nginx pour combo / livereloadFerméA. Berriot

Actions
Intégrations graphiques Publik - Development #70112: Mise en place du livereloadFerméA. Berriot

Actions

Révisions associées

Révision 1d6c14ba (diff)
Ajouté par A. Berriot il y a plus d'un an

misc: add livereload setup (#68827)

Historique

#1

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.

#2

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)

#3

Mis à jour par A. Berriot il y a plus d'un an

Je réalise que j'avais même pas inclus la démo du machin

#4

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.

#5

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

#6

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.

#7

Mis à jour par A. Berriot il y a plus d'un an

#8

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

#9

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)

#10

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)
#11

Mis à jour par Transition automatique il y a plus d'un an

  • Statut changé de Résolu (à déployer) à Solution déployée
#12

Mis à jour par Transition automatique il y a plus d'un an

Automatic expiration

Formats disponibles : Atom PDF