## Pré-requis - Récupérer le binaire TailwindCSS : https://tailwindcss.com/blog/standalone-cli ## Exécution - Lancer tailwindcss en mode watch dans un terminal : ```bash ./tailwindcss -i css/input.css -o assets/css/style.css --watch ``` - Lancer le serveur web dans un autre terminal : ```bash cargo run --bin app ``` ## Rechargement automatique (_auto-reload_) 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. 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_.