diff --git a/README.md b/README.md index c0714d4..04e9983 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,19 @@ Si vous souhaitez lancer les composants séparément, les indications de lanceme - [app](crates/app/README.md) - [sesam-vitale](crates/sesam-vitale/README.md) +## Rechargement automatique + +Pour permettre de développer plus rapidement, il existe une librairie qui recompile automatiquement nos modifications en cours : [`cargo-watch`](https://github.com/watchexec/cargo-watch) permet de relancer une commande `cargo` lorsqu'un fichier est modifié (example: `cargo run` --> `cargo watch -x run`). + +La librairie ne fait pas partie des dépendances du projet, il faut donc l'installer avec la commande suivante : +```bash +cargo install cargo-watch +``` + +Le fichier [`.ignore`](./ignore) permet d'ignorer certains fichiers pour éviter de relancer la recompilation inutilement. + +⚠️ La librairie n'est pas compatible avec _Windows 7_ et les versions antérieurs de _Windows_. + ## Build Packager le client desktop diff --git a/crates/app/README.md b/crates/app/README.md index 050bb7f..c84775b 100644 --- a/crates/app/README.md +++ b/crates/app/README.md @@ -14,16 +14,29 @@ cargo run --bin app ``` -## L'auto-reload +## Rechargement automatique (_auto-reload_) -Pour permettre au projet de s'auto-recharger lors du développement, nous avons besoin de 2 librairies : +Pour le projet `app`, nous utilisons en plus de `cargo-watch` ses librairies : +- [`systemfd`](https://github.com/mitsuhiko/systemfd) permet de redémarrer un serveur sans interrompre les connexions en cours, il transmet le descripteur de fichier du socket à une nouvelle instance du serveur (exemple: `cargo watch -x run` --> `systemfd --no-pid -s http::3000 -- cargo watch -x run`). Si le port est déjà pris il en prendra un autre. +- [`listenfd`](https://github.com/mitsuhiko/listenfd) permet, côté _Rust_, de démarrer un serveur en utilisant des connexions déjà ouvertes. +La librairie `systemfd` ne fait pas partie des dépendances du projet, il faut donc l'installer avec la commande suivante : ```bash -cargo install cargo-watch systemfd +cargo install systemfd ``` -Pour recompiler automatiquement le serveur lors de changement : +Pour notre application voici la commande à lancer : ```bash systemfd --no-pid -s http::3000 -- cargo watch -x 'run --bin app' ``` + +## Chargement à chaud (_livereload_) + +Pour que notre navigateur rafraîchisse automatique notre page lorsque le serveur a été recompilé, nous utilisons la librairie [`tower-livereload`](https://github.com/leotaku/tower-livereload). + +A chaque changement, que ça soit sur du code en _Rust_, _HTML_, _CSS_ ou _JS_ alors le navigateur va recharger entièrement la page. + +Nous filtrons les requêtes de `htmx` pour ne pas inclure le script _JS_ qui gère le rechargement ([Référence](https://github.com/leotaku/tower-livereload/pull/3)). + +En Rust, il n'existe pas encore d'outil de _Hot Reload_ complet et intégré comme on en trouve dans d'autres environnements de développement web, comme pour _Node.js_.