docs: Ajout de documentation autour de l'auto-reload et du livereload

This commit is contained in:
Simon C
2024-08-08 23:42:12 +02:00
parent 237bbe789f
commit 4d34215aa5
2 changed files with 26 additions and 4 deletions

View File

@ -14,16 +14,27 @@
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.
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_.