feat: add the hot-reload on backend crate
This commit is contained in:
parent
a50d951af7
commit
54870b0d0f
1394
Cargo.lock
generated
1394
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
10
README.md
10
README.md
@ -27,7 +27,7 @@ Des exemples de fichiers de configuration sont disponibles à la racine du proje
|
|||||||
|
|
||||||
### Pré-requis
|
### Pré-requis
|
||||||
|
|
||||||
### Frontend (Nuxt + Typescript)
|
#### Frontend (Nuxt + Typescript)
|
||||||
|
|
||||||
Le frontend est propulsé par Nuxt.js, un framework TypeScript pour Vue.js. Pour le développement, il est nécessaire d'installer les dépendances suivantes :
|
Le frontend est propulsé par Nuxt.js, un framework TypeScript pour Vue.js. Pour le développement, il est nécessaire d'installer les dépendances suivantes :
|
||||||
- [Bun](https://bun.sh/docs/installation), un gestionnaire de paquets, équivalent à `npm` en plus performant
|
- [Bun](https://bun.sh/docs/installation), un gestionnaire de paquets, équivalent à `npm` en plus performant
|
||||||
@ -46,6 +46,10 @@ cargo install tauri-cli --version "^2.0.0-rc"
|
|||||||
|
|
||||||
La crate `sesam-vitale` nécessite la présence des librairies dynamiques fournies par le package FSV et la CryptolibCPS. Les instructions d'installation sont disponibles dans le [README](crates/sesam-vitale/README.md) de la crate `sesam-vitale`.
|
La crate `sesam-vitale` nécessite la présence des librairies dynamiques fournies par le package FSV et la CryptolibCPS. Les instructions d'installation sont disponibles dans le [README](crates/sesam-vitale/README.md) de la crate `sesam-vitale`.
|
||||||
|
|
||||||
|
#### Backend Hot-reload
|
||||||
|
|
||||||
|
Voir le [README](crates/backend/README.md) de la crate `backend` pour les prérequis de développement du serveur backend.
|
||||||
|
|
||||||
### Lancement
|
### Lancement
|
||||||
|
|
||||||
Le logiciel dans sa globalité peut être lancé via la commande suivante :
|
Le logiciel dans sa globalité peut être lancé via la commande suivante :
|
||||||
@ -54,11 +58,9 @@ Le logiciel dans sa globalité peut être lancé via la commande suivante :
|
|||||||
cargo tauri dev
|
cargo tauri dev
|
||||||
```
|
```
|
||||||
|
|
||||||
/!\ Attention, le lancement du client `desktop` ne génère pas le fichier `frontend/assets/css/style.css` automatiquement pour le moment. En cas de modification des interfaces web, il est donc nécessaire de procéder à sa génération comme indiqué dans le [README](frontend/README.md) du module `frontend`.
|
|
||||||
// TODO: Adapter autogénération Tailwind au nouveau Tauri + Nuxt ?
|
|
||||||
|
|
||||||
Si vous souhaitez lancer les composants séparément, les indications de lancement sont disponibles dans les README des différents crates.
|
Si vous souhaitez lancer les composants séparément, les indications de lancement sont disponibles dans les README des différents crates.
|
||||||
|
|
||||||
|
- [backend](crates/backend/README.md)
|
||||||
- [frontend](frontend/README.md)
|
- [frontend](frontend/README.md)
|
||||||
- [sesam-vitale](crates/sesam-vitale/README.md)
|
- [sesam-vitale](crates/sesam-vitale/README.md)
|
||||||
|
|
||||||
|
@ -5,4 +5,9 @@ edition = "2021"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
axum = "0.7.6"
|
axum = "0.7.6"
|
||||||
|
listenfd = "1.0.1"
|
||||||
tokio = { version = "1.40.0", features = ["macros", "rt-multi-thread"] }
|
tokio = { version = "1.40.0", features = ["macros", "rt-multi-thread"] }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
cargo-watch = "8.5.2"
|
||||||
|
systemfd = "0.4.3"
|
||||||
|
19
crates/backend/README.md
Normal file
19
crates/backend/README.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Backend
|
||||||
|
|
||||||
|
Ceci est un serveur backend, basé sur axum, et permettant d'offrir une gestion centralisée des accès aux données.
|
||||||
|
|
||||||
|
## Prérequis
|
||||||
|
|
||||||
|
En développement, le mécanisme de hot-reload nécessite de disposer de `cargo-watch` et `systemfd`. Pour les installer, exécutez la commande suivante :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo install cargo-watch systemfd
|
||||||
|
```
|
||||||
|
|
||||||
|
## Développement
|
||||||
|
|
||||||
|
Pour lancer le serveur en mode développement, exécutez la commande suivante :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
systemfd --no-pid -s http::3030 -- cargo watch -x 'run --bin backend'
|
||||||
|
```
|
@ -1,9 +1,23 @@
|
|||||||
|
use listenfd::ListenFd;
|
||||||
|
use tokio::net::TcpListener;
|
||||||
|
|
||||||
use backend::get_router;
|
use backend::get_router;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
let app = get_router();
|
let app = get_router();
|
||||||
let listener = tokio::net::TcpListener::bind("0.0.0.0:8080").await.unwrap();
|
|
||||||
|
let mut listenfd = ListenFd::from_env();
|
||||||
|
|
||||||
|
let listener = match listenfd.take_tcp_listener(0).unwrap() {
|
||||||
|
// if we are given a tcp listener on listen fd 0, we use that one
|
||||||
|
Some(listener) => {
|
||||||
|
listener.set_nonblocking(true).unwrap();
|
||||||
|
TcpListener::from_std(listener).unwrap()
|
||||||
|
}
|
||||||
|
// otherwise fall back to local listening
|
||||||
|
None => TcpListener::bind("0.0.0.0:8080").await.unwrap(),
|
||||||
|
};
|
||||||
|
|
||||||
println!("Listening on {}", listener.local_addr().unwrap());
|
println!("Listening on {}", listener.local_addr().unwrap());
|
||||||
axum::serve(listener, app).await.unwrap();
|
axum::serve(listener, app).await.unwrap();
|
||||||
|
Loading…
Reference in New Issue
Block a user