@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 +396 -0
- package/README.fr.md +396 -0
- package/README.md +218 -536
- package/README.pt.md +508 -0
- package/bin/smart-commit.js +41 -9
- package/bin/version-control.js +6 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -12
- package/dist/index.js.map +1 -1
- package/dist/readline.d.ts +14 -0
- package/dist/readline.d.ts.map +1 -1
- package/dist/readline.js +32 -0
- package/dist/readline.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/updateChecker.d.ts +5 -0
- package/dist/updateChecker.d.ts.map +1 -1
- package/dist/updateChecker.js +18 -2
- package/dist/updateChecker.js.map +1 -1
- package/package.json +12 -6
package/README.es.md
ADDED
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
# Version Control
|
|
2
|
+
|
|
3
|
+
[](README.md)
|
|
4
|
+
[](README.pt.md)
|
|
5
|
+
[](README.es.md)
|
|
6
|
+
[](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
|
+
[](https://www.npmjs.com/package/@ridio/version-control)
|
|
11
|
+
[](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/)
|