@ridiormf/version-control 1.1.1 → 1.1.3

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.
package/README.es.md ADDED
@@ -0,0 +1,396 @@
1
+ # Version Control
2
+
3
+ [![en](https://img.shields.io/badge/lang-en-blue.svg)](README.md)
4
+ [![pt](https://img.shields.io/badge/lang-pt-green.svg)](README.pt.md)
5
+ [![es](https://img.shields.io/badge/lang-es-yellow.svg)](README.es.md)
6
+ [![fr](https://img.shields.io/badge/lang-fr-purple.svg)](README.fr.md)
7
+
8
+ > Sistema inteligente de control de versiones que analiza commits de Git y automatiza el versionado semántico (SemVer).
9
+
10
+ [![npm version](https://img.shields.io/npm/v/@ridio/version-control.svg)](https://www.npmjs.com/package/@ridio/version-control)
11
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
12
+
13
+ ## 📋 Índice
14
+
15
+ - [Acerca de](#acerca-de)
16
+ - [Instalación](#instalación)
17
+ - [Uso](#uso)
18
+ - [Cómo funciona](#cómo-funciona)
19
+ - [Ejemplos](#ejemplos)
20
+ - [API](#api)
21
+ - [Contribuir](#contribuir)
22
+ - [Licencia](#licencia)
23
+
24
+ ## 🎯 Acerca de
25
+
26
+ **Version Control** automatiza el versionado semántico de tu proyecto, eliminando la necesidad de decidir manualmente entre MAJOR, MINOR o PATCH.
27
+
28
+ **¿Por qué fue creado?**
29
+
30
+ El versionado manual es propenso a errores e inconsistente entre equipos. Esta herramienta resuelve:
31
+
32
+ - ❌ Olvidar actualizar \`package.json\`, \`CHANGELOG.md\` o tags
33
+ - ❌ Confusión sobre qué versión usar (MAJOR/MINOR/PATCH)
34
+ - ❌ CHANGELOGs incompletos o desorganizados
35
+ - ❌ Mensajes de commit inconsistentes
36
+
37
+ **Solución:**
38
+
39
+ - ✅ Analiza automáticamente commits y sugiere la versión correcta
40
+ - ✅ Actualiza todos los archivos a la vez
41
+ - ✅ Genera CHANGELOGs organizados y completos
42
+ - ✅ Crea tags y hace push automáticamente
43
+
44
+ ### ✨ Características
45
+
46
+ - 🔍 **Análisis Inteligente**: Analiza mensajes de commit y archivos modificados
47
+ - 🎯 **Sugerencia Automática**: Sugiere MAJOR, MINOR o PATCH según los cambios
48
+ - 📝 **Actualización Automática**: Actualiza \`package.json\`, \`CHANGELOG.md\` y archivos de código
49
+ - 🏷️ **Git Tags**: Crea tags automáticamente y hace push al repositorio
50
+ - 🤖 **Smart Commit**: Genera mensajes de commit siguiendo Conventional Commits
51
+ - 📋 **CHANGELOG Inteligente**: Agrupa commits por tipo y elimina duplicados
52
+ - 🧪 **Modo de Prueba**: Permite rollback automático
53
+ - 🌍 **Internacionalización**: Soporte para EN, PT, ES, FR
54
+
55
+ ## 📦 Instalación
56
+
57
+ ### Global (Recomendado)
58
+
59
+ \`\`\`bash
60
+ yarn global add @ridiormf/version-control
61
+ # o
62
+ npm install -g @ridiormf/version-control
63
+ \`\`\`
64
+
65
+ ### Como dependencia de desarrollo
66
+
67
+ \`\`\`bash
68
+ yarn add -D @ridiormf/version-control
69
+ # o
70
+ npm install -D @ridiormf/version-control
71
+ \`\`\`
72
+
73
+ ### Usando npx (sin instalación)
74
+
75
+ \`\`\`bash
76
+ npx @ridiormf/version-control
77
+ # o
78
+ yarn dlx @ridiormf/version-control
79
+ \`\`\`
80
+
81
+ ## 🚀 Uso
82
+
83
+ ### CLI - Control de Versiones
84
+
85
+ Después de hacer tus cambios y commitear:
86
+
87
+ \`\`\`bash
88
+ version-control
89
+ \`\`\`
90
+
91
+ O con npx (sin instalar):
92
+
93
+ \`\`\`bash
94
+ npx @ridiormf/version-control
95
+ \`\`\`
96
+
97
+ ### CLI - Smart Commit
98
+
99
+ Commit inteligente con mensaje automático:
100
+
101
+ \`\`\`bash
102
+ git add .
103
+ smart-commit
104
+ \`\`\`
105
+
106
+ **Ejemplo:**
107
+
108
+ \`\`\`bash
109
+ Archivos staged: 2
110
+ ✨ src/newFeature.ts (+45/-0)
111
+ 📝 src/index.ts (+5/-2)
112
+
113
+ Mensaje de commit generado:
114
+ feat(src): add newFeature
115
+
116
+ Opciones: [1] Commit [2] Editar [3] Cancelar
117
+ Elección: 1
118
+
119
+ ✓ ¡Commit creado con éxito!
120
+ \`\`\`
121
+
122
+ ### Añadir a package.json
123
+
124
+ Agrega un script a tu \`package.json\`:
125
+
126
+ \`\`\`json
127
+ {
128
+ "scripts": {
129
+ "version": "version-control",
130
+ "version:test": "version-control --test",
131
+ "commit": "smart-commit"
132
+ }
133
+ }
134
+ \`\`\`
135
+
136
+ Y ejecuta:
137
+
138
+ \`\`\`bash
139
+ # Smart commit
140
+ yarn commit
141
+
142
+ # Versionado normal
143
+ yarn version
144
+
145
+ # Versionado de prueba (permite rollback)
146
+ yarn version:test
147
+ \`\`\`
148
+
149
+ ### Uso Programático
150
+
151
+ Usa la biblioteca en tus scripts personalizados:
152
+
153
+ \`\`\`typescript
154
+ import {
155
+ analyzeChanges,
156
+ bumpVersion,
157
+ getCurrentVersion,
158
+ updatePackageJson,
159
+ updateChangelog,
160
+ executeGitCommands,
161
+ } from "@ridiormf/version-control";
162
+
163
+ // 1. Obtener versión actual
164
+ const currentVersion = getCurrentVersion();
165
+ // Retorna: "1.2.3"
166
+
167
+ // 2. Analizar cambios del último commit
168
+ const analysis = analyzeChanges();
169
+ // Retorna: { type: 'minor', reason: ['Nueva funcionalidad añadida'], filesChanged: [...], commitMsg: '...' }
170
+
171
+ // 3. Calcular nueva versión
172
+ const newVersion = bumpVersion(currentVersion, analysis.type);
173
+ // Retorna: "1.3.0"
174
+
175
+ // 4. Actualizar archivos
176
+ updatePackageJson(newVersion);
177
+ updateChangelog(newVersion, analysis.type, analysis);
178
+
179
+ // 5. Commit y crear tag
180
+ executeGitCommands(newVersion);
181
+ \`\`\`
182
+
183
+ ## 🔧 Cómo funciona
184
+
185
+ El sistema analiza cambios desde el último commit de Git y sugiere la versión apropiada basándose en el formato Conventional Commits y los cambios de archivos.
186
+
187
+ ### 🔴 MAJOR (X.0.0) - Cambios que Rompen Compatibilidad
188
+
189
+ Detectado cuando el mensaje de commit contiene palabras clave como:
190
+
191
+ - \`breaking\`, \`break\`, \`incompatible\`, \`remove\`, \`delete\`, \`rewrite\`
192
+
193
+ **Ejemplo:**
194
+
195
+ \`\`\`bash
196
+ git commit -m "breaking: remove deprecated API methods"
197
+ # Sugiere: 1.5.3 → 2.0.0
198
+ \`\`\`
199
+
200
+ ### 🟡 MINOR (x.Y.0) - Nuevas Funcionalidades
201
+
202
+ Detectado cuando:
203
+
204
+ - El mensaje contiene: \`add\`, \`new\`, \`feature\`, \`implement\`, \`create\`
205
+ - Se añaden nuevos archivos al proyecto
206
+ - Se modifican archivos de configuración
207
+
208
+ **Ejemplo:**
209
+
210
+ \`\`\`bash
211
+ git commit -m "feat: add user authentication module"
212
+ # Sugiere: 1.5.3 → 1.6.0
213
+ \`\`\`
214
+
215
+ ### 🟢 PATCH (x.y.Z) - Correcciones
216
+
217
+ Detectado cuando el mensaje contiene:
218
+
219
+ - \`fix\`, \`bug\`, \`error\`
220
+ - Cambios pequeños sin nuevos archivos
221
+
222
+ **Ejemplo:**
223
+
224
+ \`\`\`bash
225
+ git commit -m "fix: resolve memory leak in cache"
226
+ # Sugiere: 1.5.3 → 1.5.4
227
+ \`\`\`
228
+
229
+ ### 📊 Versionado Semántico
230
+
231
+ \`\`\`
232
+ ¿Rompe código existente?
233
+ ├─ SÍ → 🔴 MAJOR (X.0.0)
234
+ └─ NO → ¿Añade funcionalidad?
235
+ ├─ SÍ → 🟡 MINOR (x.Y.0)
236
+ └─ NO → 🟢 PATCH (x.y.Z)
237
+ \`\`\`
238
+
239
+ Ver más en [semver.org](https://semver.org/)
240
+
241
+ ## 📖 Ejemplos
242
+
243
+ ### Flujo Típico
244
+
245
+ \`\`\`bash
246
+ git commit -m "feat: add new export functionality"
247
+ version-control
248
+
249
+ # Versión actual: 1.2.3
250
+ # Tipo sugerido: MINOR
251
+ # Nueva versión: 1.3.0
252
+ #
253
+ # ¿Actualizar versión? (y/n): y
254
+ #
255
+ # ✓ package.json actualizado
256
+ # ✓ CHANGELOG.md actualizado
257
+ # ✓ Tag v1.3.0 creado
258
+ # ✓ ¡Versión 1.3.0 publicada!
259
+ \`\`\`
260
+
261
+ ## 📚 API
262
+
263
+ ### Métodos Disponibles
264
+
265
+ #### Análisis y Versionado
266
+
267
+ - \`analyzeChanges()\` - Analiza el último commit y sugiere tipo de versión
268
+ - \`getCurrentVersion(projectRoot?)\` - Retorna versión actual desde package.json
269
+ - \`bumpVersion(currentVersion, type)\` - Calcula nueva versión
270
+
271
+ #### Actualización de Archivos
272
+
273
+ - \`updatePackageJson(newVersion, projectRoot?)\` - Actualiza package.json
274
+ - \`updateIndexFile(newVersion, projectRoot?)\` - Actualiza @version en archivos de código
275
+ - \`updateChangelog(version, type, analysis, projectRoot?)\` - Actualiza CHANGELOG.md
276
+
277
+ #### Commit y Git
278
+
279
+ - \`executeGitCommands(version)\` - Crea commit, tag y hace push
280
+ - \`getStagedChanges()\` - Lista archivos staged
281
+ - \`generateCommitMessage(changes)\` - Genera mensaje de commit automático
282
+
283
+ #### Configuración
284
+
285
+ - \`getConfiguredLanguage()\` - Retorna idioma configurado
286
+ - \`setLanguage(lang)\` - Establece idioma manualmente
287
+ - \`clearConfig()\` - Elimina configuración
288
+
289
+ ---
290
+
291
+ ### Detalles
292
+
293
+ #### \`analyzeChanges(): ChangeAnalysis\`
294
+
295
+ Analiza el último commit y retorna un análisis de los cambios.
296
+
297
+ **Retorna:**
298
+
299
+ \`\`\`typescript
300
+ interface ChangeAnalysis {
301
+ type: "major" | "minor" | "patch";
302
+ reason: string[];
303
+ filesChanged: string[];
304
+ commitMsg: string;
305
+ }
306
+ \`\`\`
307
+
308
+ #### \`getCurrentVersion(projectRoot?: string): string\`
309
+
310
+ Retorna la versión actual desde \`package.json\`.
311
+
312
+ **Parámetros:**
313
+
314
+ - \`projectRoot\` (opcional): Ruta raíz del proyecto (predeterminado: \`process.cwd()\`)
315
+
316
+ #### \`bumpVersion(currentVersion: string, type: VersionType): string\`
317
+
318
+ Calcula la nueva versión basada en el tipo de bump.
319
+
320
+ **Parámetros:**
321
+
322
+ - \`currentVersion\`: Versión actual (ej., "1.2.3")
323
+ - \`type\`: Tipo de bump (\`'major'\`, \`'minor'\`, o \`'patch'\`)
324
+
325
+ **Ejemplo:**
326
+
327
+ \`\`\`typescript
328
+ bumpVersion("1.2.3", "major"); // "2.0.0"
329
+ bumpVersion("1.2.3", "minor"); // "1.3.0"
330
+ bumpVersion("1.2.3", "patch"); // "1.2.4"
331
+ \`\`\`
332
+
333
+ ## 🌍 Internacionalización
334
+
335
+ La herramienta detecta automáticamente el idioma del sistema y ajusta todos los mensajes en consecuencia.
336
+
337
+ ### Idiomas Soportados
338
+
339
+ - 🇬🇧 **Inglés (EN)** - Predeterminado
340
+ - 🇧🇷 **Portugués (PT)** - pt_BR, pt_PT
341
+ - 🇪🇸 **Español (ES)** - es_ES, es_MX, etc.
342
+ - 🇫🇷 **Francés (FR)** - fr_FR, fr_CA, etc.
343
+
344
+ ### Configuración Manual de Idioma
345
+
346
+ \`\`\`bash
347
+ # Configurar a Portugués
348
+ version-control config --lang pt
349
+
350
+ # Configurar a Inglés
351
+ version-control config --lang en
352
+
353
+ # Configurar a Español
354
+ version-control config --lang es
355
+
356
+ # Configurar a Francés
357
+ version-control config --lang fr
358
+
359
+ # Limpiar configuración (volver a detección automática)
360
+ version-control config --clear
361
+
362
+ # Ver configuración actual
363
+ version-control config
364
+ \`\`\`
365
+
366
+ La configuración se guarda globalmente en \`~/.version-control-config.json\` y se usará en todos los proyectos.
367
+
368
+ ## 🎯 Palabras Clave
369
+
370
+ - **MAJOR**: \`breaking\`, \`remove\`, \`delete\`, \`rewrite\`
371
+ - **MINOR**: \`add\`, \`new\`, \`feature\`, \`implement\`
372
+ - **PATCH**: \`fix\`, \`bug\`, \`error\`
373
+
374
+ ## 🤝 Contribuir
375
+
376
+ ¡Las contribuciones son bienvenidas! Siéntete libre de:
377
+
378
+ 1. Hacer fork del proyecto
379
+ 2. Crear una rama para tu funcionalidad (\`git checkout -b feature/AmazingFeature\`)
380
+ 3. Commit tus cambios (\`git commit -m 'feat: add some AmazingFeature'\`)
381
+ 4. Hacer push a la rama (\`git push origin feature/AmazingFeature\`)
382
+ 5. Abrir un Pull Request
383
+
384
+ ## 📄 Licencia
385
+
386
+ Este proyecto está bajo la licencia MIT. Ver el archivo [LICENSE](LICENSE) para más detalles.
387
+
388
+ ## 👤 Autor
389
+
390
+ **Ridio Ricardo**
391
+
392
+ - GitHub: [@ridioricardo](https://github.com/ridioricardo)
393
+
394
+ ---
395
+
396
+ Basado en las especificaciones de [Semantic Versioning 2.0.0](https://semver.org/)