@ferrflow/doc 7.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/docs-en/ci/github-actions.md +120 -0
  2. package/docs-en/ci/gitlab-ci.md +90 -0
  3. package/docs-en/ci/hosted-bot.md +82 -0
  4. package/docs-en/ci/pipeline-triggers.md +287 -0
  5. package/docs-en/configuration/config-file.md +1259 -0
  6. package/docs-en/configuration/formats.md +220 -0
  7. package/docs-en/configuration/monorepo.md +390 -0
  8. package/docs-en/installation.md +56 -0
  9. package/docs-en/introduction.md +56 -0
  10. package/docs-en/quickstart.md +66 -0
  11. package/docs-en/reference/api.md +106 -0
  12. package/docs-en/reference/cli.md +483 -0
  13. package/docs-en/reference/conventional-commits.md +103 -0
  14. package/docs-en/reference/errors.md +508 -0
  15. package/docs-en/verifying-releases.md +97 -0
  16. package/docs-fr/ci/github-actions.md +109 -0
  17. package/docs-fr/ci/gitlab-ci.md +77 -0
  18. package/docs-fr/ci/hosted-bot.md +82 -0
  19. package/docs-fr/ci/pipeline-triggers.md +238 -0
  20. package/docs-fr/configuration/config-file.md +839 -0
  21. package/docs-fr/configuration/formats.md +163 -0
  22. package/docs-fr/configuration/monorepo.md +357 -0
  23. package/docs-fr/installation.md +56 -0
  24. package/docs-fr/introduction.md +54 -0
  25. package/docs-fr/quickstart.md +63 -0
  26. package/docs-fr/reference/api.md +106 -0
  27. package/docs-fr/reference/cli.md +407 -0
  28. package/docs-fr/reference/conventional-commits.md +103 -0
  29. package/docs-fr/reference/errors.md +378 -0
  30. package/docs-fr/verifying-releases.md +97 -0
  31. package/docs-fr-v4/ci/github-actions.md +106 -0
  32. package/docs-fr-v4/ci/gitlab-ci.md +77 -0
  33. package/docs-fr-v4/ci/pipeline-triggers.md +214 -0
  34. package/docs-fr-v4/configuration/config-file.md +769 -0
  35. package/docs-fr-v4/configuration/formats.md +128 -0
  36. package/docs-fr-v4/configuration/monorepo.md +324 -0
  37. package/docs-fr-v4/installation.md +48 -0
  38. package/docs-fr-v4/introduction.md +54 -0
  39. package/docs-fr-v4/legal/telemetry.md +65 -0
  40. package/docs-fr-v4/quickstart.md +63 -0
  41. package/docs-fr-v4/reference/cli.md +130 -0
  42. package/docs-fr-v4/reference/conventional-commits.md +67 -0
  43. package/docs-fr-v4/reference/errors.md +372 -0
  44. package/docs-fr-v5/ci/github-actions.md +109 -0
  45. package/docs-fr-v5/ci/gitlab-ci.md +77 -0
  46. package/docs-fr-v5/ci/hosted-bot.md +82 -0
  47. package/docs-fr-v5/ci/pipeline-triggers.md +238 -0
  48. package/docs-fr-v5/configuration/config-file.md +812 -0
  49. package/docs-fr-v5/configuration/formats.md +150 -0
  50. package/docs-fr-v5/configuration/monorepo.md +357 -0
  51. package/docs-fr-v5/installation.md +56 -0
  52. package/docs-fr-v5/introduction.md +54 -0
  53. package/docs-fr-v5/legal/telemetry.md +26 -0
  54. package/docs-fr-v5/quickstart.md +63 -0
  55. package/docs-fr-v5/reference/api.md +106 -0
  56. package/docs-fr-v5/reference/cli.md +356 -0
  57. package/docs-fr-v5/reference/conventional-commits.md +88 -0
  58. package/docs-fr-v5/reference/errors.md +378 -0
  59. package/docs-fr-v5/verifying-releases.md +97 -0
  60. package/docs-fr-v6/ci/github-actions.md +109 -0
  61. package/docs-fr-v6/ci/gitlab-ci.md +77 -0
  62. package/docs-fr-v6/ci/hosted-bot.md +82 -0
  63. package/docs-fr-v6/ci/pipeline-triggers.md +238 -0
  64. package/docs-fr-v6/configuration/config-file.md +813 -0
  65. package/docs-fr-v6/configuration/formats.md +150 -0
  66. package/docs-fr-v6/configuration/monorepo.md +357 -0
  67. package/docs-fr-v6/installation.md +56 -0
  68. package/docs-fr-v6/introduction.md +54 -0
  69. package/docs-fr-v6/quickstart.md +63 -0
  70. package/docs-fr-v6/reference/api.md +106 -0
  71. package/docs-fr-v6/reference/cli.md +356 -0
  72. package/docs-fr-v6/reference/conventional-commits.md +88 -0
  73. package/docs-fr-v6/reference/errors.md +378 -0
  74. package/docs-fr-v6/verifying-releases.md +97 -0
  75. package/docs-v0/ci/github-actions.md +77 -0
  76. package/docs-v0/ci/gitlab-ci.md +59 -0
  77. package/docs-v0/configuration/config-file.md +97 -0
  78. package/docs-v0/configuration/formats.md +86 -0
  79. package/docs-v0/configuration/monorepo.md +59 -0
  80. package/docs-v0/installation.md +48 -0
  81. package/docs-v0/introduction.md +34 -0
  82. package/docs-v0/legal/telemetry.md +63 -0
  83. package/docs-v0/quickstart.md +58 -0
  84. package/docs-v0/reference/cli.md +95 -0
  85. package/docs-v0/reference/conventional-commits.md +68 -0
  86. package/docs-v1/ci/github-actions.md +76 -0
  87. package/docs-v1/ci/gitlab-ci.md +58 -0
  88. package/docs-v1/configuration/config-file.md +515 -0
  89. package/docs-v1/configuration/formats.md +115 -0
  90. package/docs-v1/configuration/monorepo.md +246 -0
  91. package/docs-v1/installation.md +48 -0
  92. package/docs-v1/introduction.md +39 -0
  93. package/docs-v1/legal/telemetry.md +63 -0
  94. package/docs-v1/quickstart.md +62 -0
  95. package/docs-v1/reference/cli.md +128 -0
  96. package/docs-v1/reference/conventional-commits.md +67 -0
  97. package/docs-v2/ci/github-actions.md +117 -0
  98. package/docs-v2/ci/gitlab-ci.md +90 -0
  99. package/docs-v2/ci/pipeline-triggers.md +263 -0
  100. package/docs-v2/configuration/config-file.md +806 -0
  101. package/docs-v2/configuration/formats.md +98 -0
  102. package/docs-v2/configuration/monorepo.md +324 -0
  103. package/docs-v2/installation.md +48 -0
  104. package/docs-v2/introduction.md +40 -0
  105. package/docs-v2/legal/telemetry.md +66 -0
  106. package/docs-v2/quickstart.md +63 -0
  107. package/docs-v2/reference/cli.md +130 -0
  108. package/docs-v2/reference/conventional-commits.md +67 -0
  109. package/docs-v2/reference/errors.md +500 -0
  110. package/docs-v2/self-hosting.md +101 -0
  111. package/docs-v3/ci/github-actions.md +117 -0
  112. package/docs-v3/ci/gitlab-ci.md +90 -0
  113. package/docs-v3/ci/pipeline-triggers.md +263 -0
  114. package/docs-v3/configuration/config-file.md +806 -0
  115. package/docs-v3/configuration/formats.md +99 -0
  116. package/docs-v3/configuration/monorepo.md +324 -0
  117. package/docs-v3/installation.md +48 -0
  118. package/docs-v3/introduction.md +40 -0
  119. package/docs-v3/legal/telemetry.md +66 -0
  120. package/docs-v3/quickstart.md +66 -0
  121. package/docs-v3/reference/cli.md +161 -0
  122. package/docs-v3/reference/conventional-commits.md +67 -0
  123. package/docs-v3/reference/errors.md +502 -0
  124. package/docs-v3/self-hosting.md +137 -0
  125. package/docs-v4/ci/github-actions.md +117 -0
  126. package/docs-v4/ci/gitlab-ci.md +90 -0
  127. package/docs-v4/ci/pipeline-triggers.md +263 -0
  128. package/docs-v4/configuration/config-file.md +850 -0
  129. package/docs-v4/configuration/formats.md +182 -0
  130. package/docs-v4/configuration/monorepo.md +324 -0
  131. package/docs-v4/installation.md +48 -0
  132. package/docs-v4/introduction.md +56 -0
  133. package/docs-v4/legal/telemetry.md +65 -0
  134. package/docs-v4/quickstart.md +66 -0
  135. package/docs-v4/reference/cli.md +161 -0
  136. package/docs-v4/reference/conventional-commits.md +67 -0
  137. package/docs-v4/reference/errors.md +502 -0
  138. package/docs-v4/self-hosting.md +137 -0
  139. package/docs-v5/ci/github-actions.md +120 -0
  140. package/docs-v5/ci/gitlab-ci.md +90 -0
  141. package/docs-v5/ci/hosted-bot.md +82 -0
  142. package/docs-v5/ci/pipeline-triggers.md +287 -0
  143. package/docs-v5/configuration/config-file.md +1133 -0
  144. package/docs-v5/configuration/formats.md +206 -0
  145. package/docs-v5/configuration/monorepo.md +390 -0
  146. package/docs-v5/installation.md +56 -0
  147. package/docs-v5/introduction.md +56 -0
  148. package/docs-v5/legal/telemetry.md +26 -0
  149. package/docs-v5/quickstart.md +66 -0
  150. package/docs-v5/reference/api.md +106 -0
  151. package/docs-v5/reference/cli.md +431 -0
  152. package/docs-v5/reference/conventional-commits.md +88 -0
  153. package/docs-v5/reference/errors.md +508 -0
  154. package/docs-v5/verifying-releases.md +97 -0
  155. package/docs-v6/ci/github-actions.md +120 -0
  156. package/docs-v6/ci/gitlab-ci.md +90 -0
  157. package/docs-v6/ci/hosted-bot.md +82 -0
  158. package/docs-v6/ci/pipeline-triggers.md +287 -0
  159. package/docs-v6/configuration/config-file.md +1134 -0
  160. package/docs-v6/configuration/formats.md +206 -0
  161. package/docs-v6/configuration/monorepo.md +390 -0
  162. package/docs-v6/installation.md +56 -0
  163. package/docs-v6/introduction.md +56 -0
  164. package/docs-v6/quickstart.md +66 -0
  165. package/docs-v6/reference/api.md +106 -0
  166. package/docs-v6/reference/cli.md +431 -0
  167. package/docs-v6/reference/conventional-commits.md +88 -0
  168. package/docs-v6/reference/errors.md +508 -0
  169. package/docs-v6/verifying-releases.md +97 -0
  170. package/package.json +17 -0
@@ -0,0 +1,769 @@
1
+ ---
2
+ title: Configuration
3
+ description: Référence complète du fichier de configuration FerrFlow.
4
+ ---
5
+
6
+ FerrFlow supporte six formats de fichier de configuration, recherch\u00e9s dans cet ordre :
7
+
8
+ 1. `ferrflow.json`
9
+ 2. `ferrflow.json5`
10
+ 3. `ferrflow.toml`
11
+ 4. `ferrflow.ts` (n\u00e9cessite `tsx`)
12
+ 5. `ferrflow.js` (n\u00e9cessite `node`)
13
+ 6. `.ferrflow` (JSON)
14
+
15
+ Si aucun fichier de configuration n'est trouv\u00e9, FerrFlow d\u00e9tecte automatiquement les fichiers de version courants dans le r\u00e9pertoire actuel.
16
+
17
+ <aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Ajoutez <code>&quot;$schema&quot;: &quot;https://ferrflow.com/schema/ferrflow.json&quot;</code> à votre configuration JSON pour l&#39;autocomplétion et la validation dans votre éditeur.</p>
18
+ </div></aside>
19
+
20
+ ## Formats de configuration
21
+
22
+ <div class="ferr-tabs">
23
+ <div class="ferr-tab" data-label="TypeScript"><p class="ferr-tab__label">TypeScript</p><div class="ferr-tab__body"><pre><code class="language-ts">export default {
24
+ workspace: {
25
+ tagTemplate: &quot;v{version}&quot;,
26
+ },
27
+ package: [
28
+ {
29
+ name: &quot;my-app&quot;,
30
+ path: &quot;.&quot;,
31
+ changelog: &quot;CHANGELOG.md&quot;,
32
+ versionedFiles: [
33
+ { path: &quot;Cargo.toml&quot;, format: &quot;toml&quot; },
34
+ ],
35
+ },
36
+ ],
37
+ };
38
+ </code></pre>
39
+ </div></div>
40
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
41
+ &quot;$schema&quot;: &quot;https://ferrflow.com/schema/ferrflow.json&quot;,
42
+ &quot;workspace&quot;: {
43
+ &quot;tagTemplate&quot;: &quot;v{version}&quot;
44
+ },
45
+ &quot;package&quot;: [
46
+ {
47
+ &quot;name&quot;: &quot;my-app&quot;,
48
+ &quot;path&quot;: &quot;.&quot;,
49
+ &quot;changelog&quot;: &quot;CHANGELOG.md&quot;,
50
+ &quot;versionedFiles&quot;: [
51
+ { &quot;path&quot;: &quot;Cargo.toml&quot;, &quot;format&quot;: &quot;toml&quot; }
52
+ ]
53
+ }
54
+ ]
55
+ }
56
+ </code></pre>
57
+ </div></div>
58
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
59
+ tag_template = &quot;v{version}&quot;
60
+
61
+ [[package]]
62
+ name = &quot;my-app&quot;
63
+ path = &quot;.&quot;
64
+ changelog = &quot;CHANGELOG.md&quot;
65
+
66
+ [[package.versioned_files]]
67
+ path = &quot;Cargo.toml&quot;
68
+ format = &quot;toml&quot;
69
+ </code></pre>
70
+ </div></div>
71
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
72
+ $schema: &quot;https://ferrflow.com/schema/ferrflow.json&quot;,
73
+ workspace: {
74
+ tagTemplate: &quot;v{version}&quot;,
75
+ },
76
+ package: [
77
+ {
78
+ name: &quot;my-app&quot;,
79
+ path: &quot;.&quot;,
80
+ changelog: &quot;CHANGELOG.md&quot;,
81
+ versionedFiles: [
82
+ { path: &quot;Cargo.toml&quot;, format: &quot;toml&quot; },
83
+ ],
84
+ },
85
+ ],
86
+ }
87
+ </code></pre>
88
+ </div></div>
89
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
90
+ tagTemplate: &quot;v{version}&quot;
91
+
92
+ package:
93
+
94
+ - name: my-app
95
+ path: &quot;.&quot;
96
+ changelog: CHANGELOG.md
97
+ versionedFiles:
98
+ - path: Cargo.toml
99
+ format: toml
100
+ </code></pre>
101
+
102
+ </div></div>
103
+ </div>
104
+
105
+ <aside class="ferr-aside ferr-aside--note"><div class="ferr-aside__body"><p>Les configurations JSON, JSON5, et TypeScript/JavaScript utilisent des cl\u00e9s en <strong>camelCase</strong> (<code>tagTemplate</code>, <code>versionedFiles</code>).
106
+ La configuration TOML utilise des cl\u00e9s en <strong>snake_case</strong> (<code>tag_template</code>, <code>versioned_files</code>).
107
+ Les configurations YAML supportent les deux, mais <strong>camelCase</strong> est recommand\u00e9 pour la coh\u00e9rence avec JSON.
108
+ Toutes les formes sont \u00e9quivalentes.</p>
109
+ </div></aside>
110
+
111
+ ### Configurations TypeScript et JavaScript
112
+
113
+ Les fichiers de config TypeScript (`.ts`) et JavaScript (`.js`) utilisent un export ESM par d\u00e9faut. L'export peut \u00eatre un objet ou une fonction asynchrone.
114
+
115
+ <aside class="ferr-aside ferr-aside--warning"><div class="ferr-aside__body"><p>Les configs TypeScript n\u00e9cessitent <code>tsx</code> (<code>npm install -g tsx</code>). Les configs JavaScript n\u00e9cessitent <code>node</code> (v18+).</p>
116
+ </div></aside>
117
+
118
+ L'avantage principal des configs TS/JS : les **hooks sous forme de fonctions**. Au lieu de commandes shell, vous pouvez \u00e9crire des hooks natifs avec acc\u00e8s complet au contexte :
119
+
120
+ ```ts title="ferrflow.ts"
121
+ export default {
122
+ workspace: {
123
+ tagTemplate: 'v{version}',
124
+ hooks: {
125
+ postPublish: async (ctx) => {
126
+ await fetch('https://hooks.slack.com/services/...', {
127
+ method: 'POST',
128
+ body: JSON.stringify({
129
+ text: `Released ${ctx.package}@${ctx.newVersion}`,
130
+ }),
131
+ });
132
+ },
133
+ },
134
+ },
135
+ package: [
136
+ {
137
+ name: 'my-app',
138
+ path: '.',
139
+ versionedFiles: [{ path: 'package.json', format: 'json' }],
140
+ },
141
+ ],
142
+ };
143
+ ```
144
+
145
+ #### Objet de contexte des hooks
146
+
147
+ Les hooks en fonction re\u00e7oivent un objet de contexte avec ces champs :
148
+
149
+ | Champ | Type | Description |
150
+ | -------------- | -------------- | ---------------------------------------------------------- |
151
+ | `package` | string | Nom du package |
152
+ | `oldVersion` | string | Version avant le bump (vide pour la premi\u00e8re release) |
153
+ | `newVersion` | string | Version apr\u00e8s le bump |
154
+ | `bumpType` | string | `major`, `minor`, `patch`, ou `none` |
155
+ | `tag` | string | Nom complet du tag git |
156
+ | `dryRun` | boolean | Vrai si `--dry-run` est actif |
157
+ | `packagePath` | string | Chemin absolu vers la racine du package |
158
+ | `channel` | string ou null | Nom du channel de pr\u00e9-release |
159
+ | `isPrerelease` | boolean | Vrai si c'est une pr\u00e9-release |
160
+
161
+ Les hooks sous forme de commandes shell et de fonctions peuvent \u00eatre m\u00e9lang\u00e9s dans la m\u00eame config.
162
+
163
+ ## `workspace`
164
+
165
+ Paramètres globaux qui s'appliquent à tous les packages.
166
+
167
+ | Champ | Type | Défaut | Description |
168
+ | ----------------------- | ------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
169
+ | `remote` | string | `"origin"` | Remote git vers lequel pousser |
170
+ | `branch` | string | auto-détecté | Branche vers laquelle pousser (détectée depuis le HEAD du remote) |
171
+ | `tagTemplate` | string | `"v{version}"` ou `"{name}@v{version}"` | Modèle de nommage des tags. Utilise les placeholders `{version}` et `{name}`. Par défaut `v{version}` pour les repos mono-package et `{name}@v{version}` pour les monorepos. |
172
+ | `versioning` | string | `"semver"` | Stratégie de versionnage par défaut pour tous les packages |
173
+ | `releaseCommitMode` | string | `"commit"` | Gestion du commit de release : `"commit"`, `"pr"` ou `"none"` |
174
+ | `skipCi` | boolean | dépend du mode | Ajouter `[skip ci]` aux commits de release. Par défaut `true` en mode `"commit"`, `false` sinon. |
175
+ | `autoMergeReleases` | boolean | `true` | Activer l'auto-merge sur les PR de release (uniquement en mode `"pr"`) |
176
+ | `recoverMissedReleases` | boolean | `false` | Lorsqu'activé, si FerrFlow trouve des commits non publiés couvrant plusieurs incréments de version, il crée toutes les releases intermédiaires au lieu de sauter directement à la dernière version |
177
+ | `telemetry` | boolean | `true` | Envoyer des données de télémétrie anonymes |
178
+
179
+ ### Modèle de tag
180
+
181
+ Le champ `tagTemplate` contrôle le nommage des tags git. Placeholders disponibles :
182
+
183
+ | Placeholder | Description |
184
+ | ----------- | ---------------------------------- |
185
+ | `{version}` | Le numéro de version (ex. `1.2.3`) |
186
+ | `{name}` | Le nom du package |
187
+
188
+ <div class="ferr-tabs">
189
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
190
+ &quot;workspace&quot;: {
191
+ &quot;tagTemplate&quot;: &quot;v{version}&quot;
192
+ }
193
+ }
194
+ </code></pre>
195
+ </div></div>
196
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
197
+ tag_template = &quot;v{version}&quot;
198
+ </code></pre>
199
+ </div></div>
200
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
201
+ workspace: {
202
+ tagTemplate: &quot;v{version}&quot;,
203
+ },
204
+ }
205
+ </code></pre>
206
+ </div></div>
207
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
208
+ tagTemplate: &quot;v{version}&quot;
209
+ </code></pre>
210
+ </div></div>
211
+ </div>
212
+
213
+ Pour les monorepos, utilisez `{name}` pour namespacer les tags par package :
214
+
215
+ <div class="ferr-tabs">
216
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
217
+ &quot;workspace&quot;: {
218
+ &quot;tagTemplate&quot;: &quot;{name}@v{version}&quot;
219
+ }
220
+ }
221
+ </code></pre>
222
+ </div></div>
223
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
224
+ tag_template = &quot;{name}@v{version}&quot;
225
+ </code></pre>
226
+ </div></div>
227
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
228
+ workspace: {
229
+ tagTemplate: &quot;{name}@v{version}&quot;,
230
+ },
231
+ }
232
+ </code></pre>
233
+ </div></div>
234
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
235
+ tagTemplate: &quot;{name}@v{version}&quot;
236
+ </code></pre>
237
+ </div></div>
238
+ </div>
239
+
240
+ ### Mode de commit de release
241
+
242
+ Contrôle la façon dont FerrFlow gère le commit qui met à jour les fichiers de version et les changelogs.
243
+
244
+ | Mode | Comportement |
245
+ | ---------- | ----------------------------------------------------------------------------------- |
246
+ | `"commit"` | Commit directement sur la branche courante et pousse (par défaut) |
247
+ | `"pr"` | Crée une branche `release/` et ouvre une pull request |
248
+ | `"none"` | Crée uniquement les tags et les releases, ne commit pas les changements de fichiers |
249
+
250
+ <div class="ferr-tabs">
251
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
252
+ &quot;workspace&quot;: {
253
+ &quot;releaseCommitMode&quot;: &quot;pr&quot;,
254
+ &quot;autoMergeReleases&quot;: true
255
+ }
256
+ }
257
+ </code></pre>
258
+ </div></div>
259
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
260
+ release_commit_mode = &quot;pr&quot;
261
+ auto_merge_releases = true
262
+ </code></pre>
263
+ </div></div>
264
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
265
+ workspace: {
266
+ releaseCommitMode: &quot;pr&quot;,
267
+ autoMergeReleases: true,
268
+ },
269
+ }
270
+ </code></pre>
271
+ </div></div>
272
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
273
+ releaseCommitMode: pr
274
+ autoMergeReleases: true
275
+ </code></pre>
276
+ </div></div>
277
+ </div>
278
+
279
+ ### Stratégies de versionnage
280
+
281
+ FerrFlow supporte plusieurs stratégies de versionnage, configurables au niveau du workspace ou du package.
282
+
283
+ | Stratégie | Format | Progression exemple |
284
+ | -------------- | ------------------- | ---------------------------------------- |
285
+ | `semver` | `MAJOR.MINOR.PATCH` | `1.2.3` → `1.3.0` → `2.0.0` |
286
+ | `calver` | `YYYY.MM.PATCH` | `2026.03.0` → `2026.03.1` → `2026.04.0` |
287
+ | `calver-short` | `YY.MM.PATCH` | `26.03.0` → `26.03.1` |
288
+ | `calver-seq` | `YYYY.MM.SEQ` | `2026.03.1` → `2026.03.2` |
289
+ | `sequential` | `N` | `1` → `2` → `3` |
290
+ | `zerover` | `0.MINOR.PATCH` | `0.1.0` → `0.2.0` (n'atteint jamais 1.0) |
291
+
292
+ <div class="ferr-tabs">
293
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
294
+ &quot;workspace&quot;: {
295
+ &quot;versioning&quot;: &quot;calver&quot;
296
+ }
297
+ }
298
+ </code></pre>
299
+ </div></div>
300
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
301
+ versioning = &quot;calver&quot;
302
+ </code></pre>
303
+ </div></div>
304
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
305
+ workspace: {
306
+ versioning: &quot;calver&quot;,
307
+ },
308
+ }
309
+ </code></pre>
310
+ </div></div>
311
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
312
+ versioning: calver
313
+ </code></pre>
314
+ </div></div>
315
+ </div>
316
+
317
+ ## `package`
318
+
319
+ Définit un package à versionner. Vous pouvez en avoir un ou plusieurs.
320
+
321
+ | Champ | Requis | Défaut | Description |
322
+ | ------------- | ------ | --------------------- | ----------------------------------------------------------- |
323
+ | `name` | oui | — | Identifiant du package, utilisé dans le préfixe du tag git |
324
+ | `path` | oui | — | Chemin relatif vers le répertoire du package |
325
+ | `changelog` | non | `{path}/CHANGELOG.md` | Chemin vers le fichier changelog |
326
+ | `sharedPaths` | non | `[]` | Chemins qui déclenchent ce package lorsqu'ils sont modifiés |
327
+ | `versioning` | non | hérité du workspace | Surcharger la stratégie de versionnage pour ce package |
328
+ | `tagTemplate` | non | hérité du workspace | Surcharger le modèle de tag pour ce package |
329
+
330
+ ### `versionedFiles`
331
+
332
+ Fichiers dans lesquels le numéro de version doit être mis à jour.
333
+
334
+ <div class="ferr-tabs">
335
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
336
+ &quot;package&quot;: [
337
+ {
338
+ &quot;name&quot;: &quot;my-app&quot;,
339
+ &quot;path&quot;: &quot;.&quot;,
340
+ &quot;versionedFiles&quot;: [
341
+ { &quot;path&quot;: &quot;Cargo.toml&quot;, &quot;format&quot;: &quot;toml&quot; },
342
+ { &quot;path&quot;: &quot;npm/package.json&quot;, &quot;format&quot;: &quot;json&quot; }
343
+ ]
344
+ }
345
+ ]
346
+ }
347
+ </code></pre>
348
+ </div></div>
349
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[[package]]
350
+ name = &quot;my-app&quot;
351
+ path = &quot;.&quot;
352
+
353
+ [[package.versioned_files]]
354
+ path = &quot;Cargo.toml&quot;
355
+ format = &quot;toml&quot;
356
+
357
+ [[package.versioned_files]]
358
+ path = &quot;npm/package.json&quot;
359
+ format = &quot;json&quot;
360
+ </code></pre>
361
+ </div></div>
362
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
363
+ package: [
364
+ {
365
+ name: &quot;my-app&quot;,
366
+ path: &quot;.&quot;,
367
+ versionedFiles: [
368
+ { path: &quot;Cargo.toml&quot;, format: &quot;toml&quot; },
369
+ { path: &quot;npm/package.json&quot;, format: &quot;json&quot; },
370
+ ],
371
+ },
372
+ ],
373
+ }
374
+ </code></pre>
375
+ </div></div>
376
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">package:
377
+ - name: my-app
378
+ path: &quot;.&quot;
379
+ versionedFiles:
380
+ - path: Cargo.toml
381
+ format: toml
382
+ - path: npm/package.json
383
+ format: json
384
+ </code></pre>
385
+ </div></div>
386
+ </div>
387
+
388
+ | `format` | Fichier | Champ mis à jour |
389
+ | -------- | ---------------------------------- | ------------------------------------------------------------------------ |
390
+ | `toml` | `Cargo.toml`, `pyproject.toml` | `[package].version` ou `[project].version` |
391
+ | `json` | `package.json` | `version` |
392
+ | `xml` | `pom.xml` | Premier élément `<version>` |
393
+ | `gradle` | `build.gradle`, `build.gradle.kts` | `version = "..."` |
394
+ | `helm` | `Chart.yaml` | `version` et `appVersion` (si présent) |
395
+ | `gomod` | `go.mod` | Pas de mise à jour de fichier — la version vient uniquement des tags git |
396
+ | `txt` | `VERSION`, `VERSION.txt` | Contenu entier du fichier remplacé |
397
+
398
+ ## `hooks`
399
+
400
+ Exécutez des commandes shell à des points clés du cycle de release. Les hooks peuvent être définis au niveau du workspace (par défaut pour tous les packages) ou par package (surcharge les hooks du workspace pour ce package).
401
+
402
+ ### Cycle de vie
403
+
404
+ ```
405
+ calcul du bump
406
+
407
+ pre_bump ← valider l'état, vérifier les prérequis
408
+
409
+ écriture des fichiers de version
410
+
411
+ post_bump ← modifier des fichiers supplémentaires avec la nouvelle version
412
+
413
+ génération du changelog
414
+
415
+ pre_commit ← vérifier les changements stagés, lancer les linters
416
+
417
+ git commit + tag
418
+
419
+ pre_publish ← lancer les tests sur le commit taggé, builder les artefacts
420
+
421
+ git push + création de la release
422
+
423
+ post_publish ← pousser les images Docker, notifier Slack, publier les packages
424
+ ```
425
+
426
+ ### Configuration
427
+
428
+ <div class="ferr-tabs">
429
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
430
+ &quot;workspace&quot;: {
431
+ &quot;hooks&quot;: {
432
+ &quot;preBump&quot;: &quot;cargo test&quot;,
433
+ &quot;postBump&quot;: &quot;node scripts/sync-deps.js&quot;,
434
+ &quot;preCommit&quot;: &quot;cargo fmt --check&quot;,
435
+ &quot;prePublish&quot;: &quot;cargo build --release&quot;,
436
+ &quot;postPublish&quot;: &quot;make docker-push &amp;&amp; ./scripts/notify.sh&quot;,
437
+ &quot;onFailure&quot;: &quot;abort&quot;
438
+ }
439
+ }
440
+ }
441
+ </code></pre>
442
+ </div></div>
443
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[hooks]
444
+ pre_bump = &quot;cargo test&quot;
445
+ post_bump = &quot;node scripts/sync-deps.js&quot;
446
+ pre_commit = &quot;cargo fmt --check&quot;
447
+ pre_publish = &quot;cargo build --release&quot;
448
+ post_publish = &quot;make docker-push &amp;&amp; ./scripts/notify.sh&quot;
449
+ on_failure = &quot;abort&quot;
450
+ </code></pre>
451
+ </div></div>
452
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
453
+ workspace: {
454
+ hooks: {
455
+ preBump: &quot;cargo test&quot;,
456
+ postBump: &quot;node scripts/sync-deps.js&quot;,
457
+ preCommit: &quot;cargo fmt --check&quot;,
458
+ prePublish: &quot;cargo build --release&quot;,
459
+ postPublish: &quot;make docker-push &amp;&amp; ./scripts/notify.sh&quot;,
460
+ onFailure: &quot;abort&quot;,
461
+ },
462
+ },
463
+ }
464
+ </code></pre>
465
+ </div></div>
466
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
467
+ hooks:
468
+ preBump: cargo test
469
+ postBump: node scripts/sync-deps.js
470
+ preCommit: cargo fmt --check
471
+ prePublish: cargo build --release
472
+ postPublish: &quot;make docker-push &amp;&amp; ./scripts/notify.sh&quot;
473
+ onFailure: abort
474
+ </code></pre>
475
+ </div></div>
476
+ </div>
477
+
478
+ | Champ | Type | Défaut | Description |
479
+ | ------------- | ------ | --------- | --------------------------------------------------------------------------------- |
480
+ | `preBump` | string | — | Exécuté après le calcul du bump, avant l'écriture des fichiers de version |
481
+ | `postBump` | string | — | Exécuté après l'écriture des fichiers de version |
482
+ | `preCommit` | string | — | Exécuté après le changelog, avant le commit git |
483
+ | `prePublish` | string | — | Exécuté après le commit+tag, avant le push |
484
+ | `postPublish` | string | — | Exécuté après le push et la création de la release |
485
+ | `onFailure` | string | `"abort"` | `"abort"` annule la release en cas d'échec, `"continue"` affiche un avertissement |
486
+
487
+ ### Variables d'environnement
488
+
489
+ Chaque hook reçoit ces variables :
490
+
491
+ | Variable | Description | Exemple |
492
+ | ----------------------- | ----------------------------------------------------- | ------------------------------ |
493
+ | `FERRFLOW_PACKAGE` | Nom du package | `api` |
494
+ | `FERRFLOW_OLD_VERSION` | Version avant le bump (vide pour la première release) | `1.2.3` |
495
+ | `FERRFLOW_NEW_VERSION` | Version après le bump | `1.3.0` |
496
+ | `FERRFLOW_BUMP_TYPE` | `major`, `minor`, `patch` ou `none` | `minor` |
497
+ | `FERRFLOW_TAG` | Nom complet du tag git | `api@v1.3.0` |
498
+ | `FERRFLOW_DRY_RUN` | `true` si `--dry-run` est activé | `false` |
499
+ | `FERRFLOW_PACKAGE_PATH` | Chemin absolu vers la racine du package | `/home/user/repo/packages/api` |
500
+
501
+ ### Hooks par package
502
+
503
+ Les hooks au niveau du package **remplacent** les hooks du workspace pour ce package (ils ne sont pas fusionnés).
504
+
505
+ <div class="ferr-tabs">
506
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
507
+ &quot;workspace&quot;: {
508
+ &quot;hooks&quot;: {
509
+ &quot;preBump&quot;: &quot;echo releasing $FERRFLOW_PACKAGE&quot;,
510
+ &quot;postPublish&quot;: &quot;make notify&quot;
511
+ }
512
+ },
513
+ &quot;package&quot;: [
514
+ {
515
+ &quot;name&quot;: &quot;api&quot;,
516
+ &quot;path&quot;: &quot;packages/api&quot;,
517
+ &quot;hooks&quot;: {
518
+ &quot;preBump&quot;: &quot;cargo test&quot;
519
+ }
520
+ }
521
+ ]
522
+ }
523
+ </code></pre>
524
+ </div></div>
525
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[hooks]
526
+ pre_bump = &quot;echo releasing $FERRFLOW_PACKAGE&quot;
527
+ post_publish = &quot;make notify&quot;
528
+
529
+ [[package]]
530
+ name = &quot;api&quot;
531
+ path = &quot;packages/api&quot;
532
+
533
+ [package.hooks]
534
+ pre_bump = &quot;cargo test&quot;
535
+ </code></pre>
536
+ </div></div>
537
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
538
+ workspace: {
539
+ hooks: {
540
+ preBump: &quot;echo releasing $FERRFLOW_PACKAGE&quot;,
541
+ postPublish: &quot;make notify&quot;,
542
+ },
543
+ },
544
+ package: [
545
+ {
546
+ name: &quot;api&quot;,
547
+ path: &quot;packages/api&quot;,
548
+ hooks: {
549
+ preBump: &quot;cargo test&quot;,
550
+ },
551
+ },
552
+ ],
553
+ }
554
+ </code></pre>
555
+ </div></div>
556
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
557
+ hooks:
558
+ preBump: &quot;echo releasing $FERRFLOW_PACKAGE&quot;
559
+ postPublish: make notify
560
+
561
+ package:
562
+
563
+ - name: api
564
+ path: packages/api
565
+ hooks:
566
+ preBump: cargo test
567
+ </code></pre>
568
+
569
+ </div></div>
570
+ </div>
571
+
572
+ Dans cet exemple, le package `api` exécute `cargo test` pour `preBump` (surchargeant l'echo du workspace) mais hérite du hook `postPublish` du workspace.
573
+
574
+ ### Comportement
575
+
576
+ - **`--dry-run`** : les hooks sont affichés mais non exécutés.
577
+ - **`--verbose`** : la sortie stdout/stderr des hooks est diffusée en direct. Sinon, la sortie n'est affichée qu'en cas d'échec.
578
+ - Les fichiers modifiés par les hooks `postBump` ou `preCommit` sont automatiquement inclus dans le commit de release.
579
+
580
+ ## Exemples complets
581
+
582
+ ### Repo unique
583
+
584
+ <div class="ferr-tabs">
585
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
586
+ &quot;$schema&quot;: &quot;https://ferrflow.com/schema/ferrflow.json&quot;,
587
+ &quot;workspace&quot;: {
588
+ &quot;tagTemplate&quot;: &quot;v{version}&quot;
589
+ },
590
+ &quot;package&quot;: [
591
+ {
592
+ &quot;name&quot;: &quot;ferrflow&quot;,
593
+ &quot;path&quot;: &quot;.&quot;,
594
+ &quot;changelog&quot;: &quot;CHANGELOG.md&quot;,
595
+ &quot;versionedFiles&quot;: [
596
+ { &quot;path&quot;: &quot;Cargo.toml&quot;, &quot;format&quot;: &quot;toml&quot; },
597
+ { &quot;path&quot;: &quot;npm/package.json&quot;, &quot;format&quot;: &quot;json&quot; }
598
+ ]
599
+ }
600
+ ]
601
+ }
602
+ </code></pre>
603
+ </div></div>
604
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
605
+ tag_template = &quot;v{version}&quot;
606
+
607
+ [[package]]
608
+ name = &quot;ferrflow&quot;
609
+ path = &quot;.&quot;
610
+ changelog = &quot;CHANGELOG.md&quot;
611
+
612
+ [[package.versioned_files]]
613
+ path = &quot;Cargo.toml&quot;
614
+ format = &quot;toml&quot;
615
+
616
+ [[package.versioned_files]]
617
+ path = &quot;npm/package.json&quot;
618
+ format = &quot;json&quot;
619
+ </code></pre>
620
+ </div></div>
621
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
622
+ $schema: &quot;https://ferrflow.com/schema/ferrflow.json&quot;,
623
+ workspace: {
624
+ tagTemplate: &quot;v{version}&quot;,
625
+ },
626
+ package: [
627
+ {
628
+ name: &quot;ferrflow&quot;,
629
+ path: &quot;.&quot;,
630
+ changelog: &quot;CHANGELOG.md&quot;,
631
+ versionedFiles: [
632
+ { path: &quot;Cargo.toml&quot;, format: &quot;toml&quot; },
633
+ { path: &quot;npm/package.json&quot;, format: &quot;json&quot; },
634
+ ],
635
+ },
636
+ ],
637
+ }
638
+ </code></pre>
639
+ </div></div>
640
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
641
+ tagTemplate: &quot;v{version}&quot;
642
+
643
+ package:
644
+
645
+ - name: ferrflow
646
+ path: &quot;.&quot;
647
+ changelog: CHANGELOG.md
648
+ versionedFiles:
649
+ - path: Cargo.toml
650
+ format: toml
651
+ - path: npm/package.json
652
+ format: json
653
+ </code></pre>
654
+
655
+ </div></div>
656
+ </div>
657
+
658
+ ### Monorepo
659
+
660
+ <div class="ferr-tabs">
661
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
662
+ &quot;$schema&quot;: &quot;https://ferrflow.com/schema/ferrflow.json&quot;,
663
+ &quot;workspace&quot;: {
664
+ &quot;tagTemplate&quot;: &quot;{name}@v{version}&quot;
665
+ },
666
+ &quot;package&quot;: [
667
+ {
668
+ &quot;name&quot;: &quot;api&quot;,
669
+ &quot;path&quot;: &quot;packages/api&quot;,
670
+ &quot;changelog&quot;: &quot;packages/api/CHANGELOG.md&quot;,
671
+ &quot;sharedPaths&quot;: [&quot;packages/shared/&quot;],
672
+ &quot;versionedFiles&quot;: [
673
+ { &quot;path&quot;: &quot;packages/api/Cargo.toml&quot;, &quot;format&quot;: &quot;toml&quot; }
674
+ ]
675
+ },
676
+ {
677
+ &quot;name&quot;: &quot;site&quot;,
678
+ &quot;path&quot;: &quot;packages/site&quot;,
679
+ &quot;changelog&quot;: &quot;packages/site/CHANGELOG.md&quot;,
680
+ &quot;sharedPaths&quot;: [&quot;packages/shared/&quot;],
681
+ &quot;versionedFiles&quot;: [
682
+ { &quot;path&quot;: &quot;packages/site/package.json&quot;, &quot;format&quot;: &quot;json&quot; }
683
+ ]
684
+ }
685
+ ]
686
+ }
687
+ </code></pre>
688
+ </div></div>
689
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
690
+ tag_template = &quot;{name}@v{version}&quot;
691
+
692
+ [[package]]
693
+ name = &quot;api&quot;
694
+ path = &quot;packages/api&quot;
695
+ changelog = &quot;packages/api/CHANGELOG.md&quot;
696
+ shared_paths = [&quot;packages/shared/&quot;]
697
+
698
+ [[package.versioned_files]]
699
+ path = &quot;packages/api/Cargo.toml&quot;
700
+ format = &quot;toml&quot;
701
+
702
+ [[package]]
703
+ name = &quot;site&quot;
704
+ path = &quot;packages/site&quot;
705
+ changelog = &quot;packages/site/CHANGELOG.md&quot;
706
+ shared_paths = [&quot;packages/shared/&quot;]
707
+
708
+ [[package.versioned_files]]
709
+ path = &quot;packages/site/package.json&quot;
710
+ format = &quot;json&quot;
711
+ </code></pre>
712
+ </div></div>
713
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
714
+ $schema: &quot;https://ferrflow.com/schema/ferrflow.json&quot;,
715
+ workspace: {
716
+ tagTemplate: &quot;{name}@v{version}&quot;,
717
+ },
718
+ package: [
719
+ {
720
+ name: &quot;api&quot;,
721
+ path: &quot;packages/api&quot;,
722
+ changelog: &quot;packages/api/CHANGELOG.md&quot;,
723
+ sharedPaths: [&quot;packages/shared/&quot;],
724
+ versionedFiles: [
725
+ { path: &quot;packages/api/Cargo.toml&quot;, format: &quot;toml&quot; },
726
+ ],
727
+ },
728
+ {
729
+ name: &quot;site&quot;,
730
+ path: &quot;packages/site&quot;,
731
+ changelog: &quot;packages/site/CHANGELOG.md&quot;,
732
+ sharedPaths: [&quot;packages/shared/&quot;],
733
+ versionedFiles: [
734
+ { path: &quot;packages/site/package.json&quot;, format: &quot;json&quot; },
735
+ ],
736
+ },
737
+ ],
738
+ }
739
+ </code></pre>
740
+ </div></div>
741
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
742
+ tagTemplate: &quot;{name}@v{version}&quot;
743
+
744
+ package:
745
+
746
+ - name: api
747
+ path: packages/api
748
+ changelog: packages/api/CHANGELOG.md
749
+ sharedPaths:
750
+ - packages/shared/
751
+ versionedFiles:
752
+ - path: packages/api/Cargo.toml
753
+ format: toml
754
+
755
+ - name: site
756
+ path: packages/site
757
+ changelog: packages/site/CHANGELOG.md
758
+ sharedPaths:
759
+ - packages/shared/
760
+ versionedFiles:
761
+ - path: packages/site/package.json
762
+ format: json
763
+ </code></pre>
764
+
765
+ </div></div>
766
+ </div>
767
+
768
+ <aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Exécutez <code>ferrflow init</code> pour générer automatiquement un fichier de configuration basé sur ce que FerrFlow détecte dans votre repo.</p>
769
+ </div></aside>