SemVer 2: Semantic Versioning
SemVer 2 es un estándar de versionado que utiliza tres números para comunicar el tipo de cambios en software.
Formato: MAJOR.MINOR.PATCH
1.2.3
│ │ │
│ │ └── PATCH: Bug fixes
│ └──── MINOR: New features (backward compatible)
└────── MAJOR: Breaking changes
Reglas de incremento
- PATCH (
1.0.0→1.0.1): Solo correcciones de bugs compatibles - MINOR (
1.0.1→1.1.0): Nuevas funcionalidades que no rompen compatibilidad - MAJOR (
1.1.0→2.0.0): Cambios que rompen compatibilidad con versiones anteriores
Pre-releases y metadata
1.0.0-alpha.1 # Pre-release
1.0.0+20230101.git # Build metadata
1.0.0-beta.2+exp.1 # Ambos
Precedencia de versiones
1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0
Compatibilidad de dependencias
- Caret (
^1.2.3): Compatible con1.2.3hasta<2.0.0 - Tilde (
~1.2.3): Compatible con1.2.3hasta<1.3.0 - Exacto (
1.2.3): Solo versión específica
Casos de uso comunes
APIs y librerías:
- 1.0.0: Primera versión estable
- 1.1.0: Añadir endpoint nuevo
- 2.0.0: Cambiar formato de respuesta
Aplicaciones:
- 1.0.1: Corregir bug en interfaz
- 1.1.0: Nueva funcionalidad opcional
- 2.0.0: Rediseño que cambia workflow
Beneficios
- Predictibilidad: Los usuarios saben qué esperar de cada actualización
- Automatización: Herramientas pueden actualizar dependencias de forma segura
- Comunicación: Transmite impacto sin documentación extensa
Implementación
- Comenzar con
0.1.0para desarrollo - Primera release pública:
1.0.0 - Incrementar según tipo de cambio
- Usar pre-releases para versiones experimentales
SemVer 2 facilita la gestión de dependencias y reduce conflictos en ecosistemas de software complejos.