feat(scaffold): add Axum + Leptos SSR base structure
Sets up the full project skeleton: Cargo.toml with ssr/hydrate features, Axum server entry point, shared Leptos lib, root App component with router, server/client module split, and Trunk config for WASM build. Both `cargo check --features ssr` and `cargo check --features hydrate --target wasm32-unknown-unknown` pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
73
Cargo.toml
73
Cargo.toml
@@ -1,6 +1,77 @@
|
||||
[package]
|
||||
name = "rust-ipam"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
edition = "2021"
|
||||
|
||||
# Leptos nécessite deux formats de compilation :
|
||||
# - rlib : bibliothèque normale, utilisée par le serveur Axum
|
||||
# - cdylib : bibliothèque dynamique compilée en WebAssembly pour le navigateur
|
||||
[lib]
|
||||
crate-type = ["cdylib", "rlib"]
|
||||
|
||||
# Les "features" permettent d'activer du code conditionnellement selon le contexte.
|
||||
# On compile deux fois le même code : une fois en mode "ssr" (serveur), une fois "hydrate" (WASM).
|
||||
[features]
|
||||
# Mode serveur : active Axum, Tokio, et le rendu HTML côté serveur
|
||||
ssr = [
|
||||
"dep:axum",
|
||||
"dep:tokio",
|
||||
"dep:tower-http",
|
||||
"dep:leptos_axum",
|
||||
"dep:tracing-subscriber",
|
||||
"leptos/ssr",
|
||||
"leptos_meta/ssr",
|
||||
"leptos_router/ssr",
|
||||
]
|
||||
# Mode client : compile l'application en WebAssembly pour le navigateur
|
||||
# Note : seul `leptos` expose une feature "hydrate" ; leptos_meta et leptos_router
|
||||
# n'en ont pas besoin — ils s'adaptent automatiquement au mode de compilation.
|
||||
hydrate = [
|
||||
"dep:console_error_panic_hook",
|
||||
"dep:wasm-bindgen",
|
||||
"leptos/hydrate",
|
||||
]
|
||||
|
||||
[dependencies]
|
||||
# --- Dépendances partagées (compilées côté serveur ET client) ---
|
||||
|
||||
# Framework UI réactif full-stack : le cœur du projet
|
||||
leptos = { version = "0.7", features = [] }
|
||||
# Gestion des balises HTML <head> (title, meta tags, liens CSS...)
|
||||
leptos_meta = { version = "0.7", features = [] }
|
||||
# Routeur : associe des URLs à des composants, côté serveur et client
|
||||
leptos_router = { version = "0.7", features = [] }
|
||||
|
||||
# Dérive automatiquement des types d'erreurs idiomatiques Rust
|
||||
thiserror = "1"
|
||||
# Macros pour les logs : tracing::info!(), tracing::error!()...
|
||||
tracing = "0.1"
|
||||
|
||||
# --- Dépendances serveur uniquement (activées par la feature "ssr") ---
|
||||
|
||||
# Serveur HTTP asynchrone rapide et ergonomique
|
||||
axum = { version = "0.7", optional = true }
|
||||
# Runtime asynchrone Rust (nécessaire pour `async fn main()` et les Futures)
|
||||
tokio = { version = "1", features = ["full"], optional = true }
|
||||
# Pont entre Leptos et Axum : SSR, server functions, streaming...
|
||||
leptos_axum = { version = "0.7", optional = true }
|
||||
# Middleware HTTP : sert les fichiers statiques (CSS, WASM compilé, images...)
|
||||
tower-http = { version = "0.5", features = ["fs"], optional = true }
|
||||
# Formateur de logs pour le terminal (affiche les messages tracing::info!...)
|
||||
tracing-subscriber = { version = "0.3", features = ["env-filter"], optional = true }
|
||||
|
||||
# --- Dépendances client uniquement (activées par la feature "hydrate") ---
|
||||
|
||||
# Affiche les panics Rust dans la console du navigateur (indispensable pour déboguer)
|
||||
console_error_panic_hook = { version = "0.1", optional = true }
|
||||
# Pont entre Rust/WASM et JavaScript : permet d'appeler du JS depuis Rust
|
||||
wasm-bindgen = { version = "0.2", optional = true }
|
||||
|
||||
# Profil de compilation WASM optimisé pour réduire la taille du fichier .wasm
|
||||
# Un fichier WASM plus petit = page qui charge plus vite
|
||||
[profile.wasm-release]
|
||||
inherits = "release"
|
||||
opt-level = "z" # Optimise pour la taille (z) plutôt que la vitesse (3)
|
||||
lto = true # Link-Time Optimization : élimine le code mort entre crates
|
||||
codegen-units = 1 # Un seul thread de codegen = meilleure optimisation globale
|
||||
panic = "abort" # Pas de stack unwinding = binaire plus petit
|
||||
|
||||
Reference in New Issue
Block a user