Skip to content

Commit a99cc2b

Browse files
include how-to-auto-versioning.md in the remote repo
1 parent 95ba78b commit a99cc2b

File tree

2 files changed

+157
-1
lines changed

2 files changed

+157
-1
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,3 @@ dist-ssr
2222
*.njsproj
2323
*.sln
2424
*.sw?
25-
automatisation.md

how-to-auto-versioning.md

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
Parfait 👍 tu veux donc passer à la vitesse **pro** : ne plus changer les versions **manuellement**, mais laisser des outils le faire automatiquement.
2+
3+
👉 C’est exactement ce que font des projets comme **React** (105 releases 😅).
4+
5+
---
6+
7+
# 🔧 Automatisation des versions
8+
9+
Il y a plusieurs niveaux d’automatisation :
10+
11+
---
12+
13+
## 1. 📦 `npm version` (le plus simple)
14+
15+
NPM possède déjà une commande intégrée pour gérer les versions.
16+
17+
```bash
18+
# augmente la version PATCH (1.0.0 → 1.0.1)
19+
npm version patch
20+
21+
# augmente la version MINOR (1.0.0 → 1.1.0)
22+
npm version minor
23+
24+
# augmente la version MAJOR (1.0.0 → 2.0.0)
25+
npm version major
26+
```
27+
28+
👉 Cette commande :
29+
30+
1. Met à jour ton `package.json` et `package-lock.json`.
31+
2. Crée un commit avec message du style `v1.0.1`.
32+
3. Ajoute un tag Git (`v1.0.1`).
33+
34+
Ensuite tu pushes :
35+
36+
```bash
37+
git push origin main --tags
38+
```
39+
40+
⚡ Simple, efficace, mais pas “intelligent” : c’est toi qui décides patch/minor/major.
41+
42+
---
43+
44+
## 2. 🤖 **Conventional Commits + standard-version**
45+
46+
Si tu veux que les versions se gèrent **toutes seules** selon tes commits :
47+
👉 Utilise les **Conventional Commits**.
48+
49+
Exemple de commits :
50+
51+
```
52+
feat: ajout d’un bouton "ajouter tâche"
53+
fix: correction bug affichage des tâches
54+
chore: mise à jour dépendances
55+
```
56+
57+
Puis, avec **standard-version** (outil basé sur ça) :
58+
59+
```bash
60+
npm install --save-dev standard-version
61+
```
62+
63+
Ajoute un script dans ton `package.json` :
64+
65+
```json
66+
"scripts": {
67+
"release": "standard-version"
68+
}
69+
```
70+
71+
Lance :
72+
73+
```bash
74+
npm run release
75+
```
76+
77+
👉 Résultat :
78+
79+
* Détecte les commits `feat`, `fix`, etc.
80+
* Génère automatiquement le **nouveau numéro de version** (patch/minor/major).
81+
* Crée un **CHANGELOG.md** à partir de tes commits.
82+
* Ajoute un commit + tag Git.
83+
84+
Ensuite :
85+
86+
```bash
87+
git push --follow-tags origin main
88+
```
89+
90+
C’est ce que beaucoup de libs JS utilisent.
91+
92+
---
93+
94+
## 3. 🚀 **semantic-release** (niveau pro ++)
95+
96+
C’est le niveau ultime : tu ne gères plus **rien à la main**.
97+
98+
1. Tu écris tes commits en **conventional commits**.
99+
2. Tu configures **semantic-release**.
100+
3. À chaque merge sur `main`, un pipeline CI (GitHub Actions, GitLab CI, etc.) :
101+
102+
* Analyse les commits depuis la dernière version.
103+
* Détermine s’il faut un **patch/minor/major**.
104+
* Crée un **tag Git**.
105+
* Génère/Met à jour le **CHANGELOG.md**.
106+
* Publie la **release GitHub**.
107+
* Publie la **release npm** (si c’est une lib).
108+
109+
👉 Exemple d’utilisation sur GitHub Actions :
110+
111+
```yaml
112+
name: Release
113+
on:
114+
push:
115+
branches:
116+
- main
117+
118+
jobs:
119+
release:
120+
runs-on: ubuntu-latest
121+
steps:
122+
- uses: actions/checkout@v3
123+
- uses: actions/setup-node@v3
124+
with:
125+
node-version: 18
126+
- run: npm ci
127+
- run: npx semantic-release
128+
env:
129+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
130+
```
131+
132+
Et voilà : dès que tu merges, la **version est calculée et publiée automatiquement** 🎉.
133+
134+
---
135+
136+
## 4. 🏗️ Intégration avec Google Play / App Store
137+
138+
* Pour une app mobile (React Native/Expo), on relie ça à **fastlane** ou **EAS (Expo Application Services)**.
139+
* Quand une release est publiée (tag Git + version), un workflow CI :
140+
141+
* génère l’APK/IPA,
142+
* incrémente `versionCode` / `buildNumber`,
143+
* envoie automatiquement l’app sur Google Play (alpha, beta, prod).
144+
145+
---
146+
147+
## 🔑 Résumé
148+
149+
* **npm version** → manuel mais simple.
150+
* **standard-version** → semi-auto (basé sur tes commits).
151+
* **semantic-release** → full auto (CI/CD, changelog, release GitHub, npm, etc.).
152+
153+
👉 C’est pour ça que React, Vue, Angular publient **plein de versions sans effort** : ils ont un pipeline CI/CD qui gère tout.
154+
155+
---
156+
157+
Veux-tu que je te montre un **workflow automatisé complet** pour une app React Native (commit → version → release GitHub → build APK) avec les outils modernes (`semantic-release` + GitHub Actions) ?

0 commit comments

Comments
 (0)