Vécu projet : EVQuest (Python + Node + Rust + Tauri) Date : Mars 2026 Stack : Python, Node.js, Rust, Tauri v2
Contexte
EVQuest combine 5 stacks (Python, Node.js, Rust, React, Tauri) avec chacune son fichier de version.
Problème
Un projet multi-stack a la version déclarée dans 5-6 fichiers différents. Sans source unique, les versions dérivent et le build produit des artefacts incohérents.
Solution
{ "version": "0.8.4" }
Fichiers synchronisés par un script bump_version.py
| Fichier | Champ | Stack |
|---|---|---|
version.json |
version |
Source unique |
package.json (racine) |
version |
Node/npm |
frontend/package.json |
version |
Frontend React |
pyproject.toml |
[project].version |
Python |
src-tauri/tauri.conf.json |
version |
Tauri/NSIS |
src-tauri/Cargo.toml |
[package].version |
Rust |
Script de bump
# Définir une version spécifique
python scripts/bump_version.py --set 0.8.4
# Incrémenter
python scripts/bump_version.py --patch # 0.8.4 → 0.8.5
python scripts/bump_version.py --minor # 0.8.4 → 0.9.0
# Vérifier la synchronisation (sans modifier)
python scripts/bump_version.py --check
Vérification runtime
# Le backend expose la version via un health check
curl http://127.0.0.1:8742/api/v1/health
# → {"status": "ok", "version": "0.8.4"}
Intégration dans le workflow de release
# 1. Bump
python scripts/bump_version.py --set 0.8.5
# 2. Commit tous les fichiers modifiés
git add version.json package.json frontend/package.json \
pyproject.toml src-tauri/tauri.conf.json src-tauri/Cargo.toml
git commit -m "chore: bump version to 0.8.5"
# 3. Build (le script vérifie la sync en étape 0)
scripts/build_release.bat
# 4. Tag + push
git tag v0.8.5
git push && git push --tags
Points d'attention
- Le script
bump_version.pydoit être le seul moyen de changer la version. Jamais d'édition manuelle des fichiers individuels. - L'étape 0 du build pipeline (
--check) doit abort si les versions ne sont pas synchronisées. - Le health endpoint du backend doit retourner la version pour vérification post-déploiement.
Pourquoi
version.json comme source unique plutôt que package.json car le projet combine 5 stacks différentes avec chacune son fichier de version. Un script Python unique (bump_version.py) synchronise tous les fichiers — c'est le seul moyen de changer la version. L'alternative (édition manuelle de 6 fichiers) garantit le drift.
Ce pattern s'applique à tout projet combinant plusieurs stacks (Tauri, Electron, monorepos). Pour les projets single-stack (Next.js seul par exemple), un simple package.json suffit.
Dernière mise à jour : mars 2026