En este artículo
Que es el versionado semantico?
El Versionado Semántico (SemVer) es un esquema de versiones que asigna significado a cada parte de un número de versión. Creado por Tom Preston-Werner, SemVer proporciona una convención universal para comunicar la naturaleza e impacto de los cambios de software a través de los números de versión únicamente.
Al seguir SemVer, los desarrolladores y usuarios pueden entender instantáneamente si una actualización introduce cambios disruptivos, nuevas funcionalidades o correcciones de errores — simplemente leyendo el número de versión. Esta previsibilidad es crucial para la gestión de dependencias en los ecosistemas de software modernos.
El formato SemVer
Una versión semántica consta de tres componentes numéricos separados por puntos: MAYOR.MENOR.PARCHE.
- MAYOR — se incrementa cuando se realizan cambios incompatibles en la API. Pasar de 1.x.x a 2.0.0 indica que el código existente puede fallar
- MENOR — se incrementa cuando se agrega funcionalidad de manera compatible con versiones anteriores. Pasar de 1.2.x a 1.3.0 significa nuevas funcionalidades sin romper las existentes
- PARCHE — se incrementa cuando se realizan correcciones de errores compatibles con versiones anteriores. Pasar de 1.2.3 a 1.2.4 significa que solo se corrigieron errores
- Cada componente debe ser un entero no negativo y no debe contener ceros iniciales (1.02.3 no es válido)
Pruébalo gratis — sin registro
Validar una version SemVer →Rangos de versiones
Los gestores de paquetes usan rangos de versiones para especificar versiones de dependencias compatibles. Comprender estos rangos es esencial para compilaciones confiables.
- Rangos de intercalación (^1.2.3) — permiten cambios que no modifican el dígito más a la izquierda distinto de cero. ^1.2.3 significa cualquier versión desde 1.2.3 hasta pero sin incluir 2.0.0
- Rangos de tilde (~1.2.3) — permiten solo cambios a nivel de parche. ~1.2.3 significa cualquier versión desde 1.2.3 hasta pero sin incluir 1.3.0
- Versión exacta (1.2.3) — solo esa versión específica es aceptable, sin flexibilidad
Casos de uso
El versionado semántico es la base de la gestión de paquetes moderna y los flujos de trabajo de lanzamiento.
- npm, pip y Cargo — los gestores de paquetes dependen de SemVer para resolver los árboles de dependencias y evitar que los cambios disruptivos lleguen a producción
- Canales CI/CD — los sistemas automatizados usan etiquetas SemVer para desencadenar compilaciones, publicar lanzamientos y generar registros de cambios
- Versiones de API — las API REST usan versiones principales en las URL (v1, v2) para mantener la compatibilidad con versiones anteriores mientras evolucionan
- Autores de bibliotecas — publicar una biblioteca con SemVer adecuado indica a los consumidores cuándo las actualizaciones son seguras
Pre-release y metadatos
SemVer admite dos extensiones opcionales que agregan contexto a los números de versión sin afectar las reglas de precedencia.
- Identificadores de prerelease — se añaden después de un guion: 1.0.0-alpha, 1.0.0-beta.2, 1.0.0-rc.1. Estos indican versiones que aún no son estables y tienen menor precedencia que el lanzamiento asociado
- Metadatos de compilación — se añaden después de un signo más: 1.0.0+build.123, 1.0.0-beta+exp.sha.5114f85. Los metadatos de compilación se ignoran al determinar la precedencia de versiones
- Las versiones de prerelease se ordenan usando identificadores separados por puntos: los identificadores numéricos se ordenan numéricamente, los identificadores alfanuméricos se ordenan léxicamente
FAQ
¿Se trata 0.x.x de forma diferente a 1.x.x?
Sí. En SemVer, la versión 0.x.x indica desarrollo inicial donde cualquier cosa puede cambiar en cualquier momento. La API pública no debe considerarse estable. Una vez que lanza 1.0.0, se compromete a seguir las reglas de SemVer para todos los lanzamientos posteriores.
¿Puedo usar v como prefijo (v1.2.3)?
La especificación SemVer no incluye un prefijo v — el formato canónico es 1.2.3. Sin embargo, muchas herramientas (etiquetas de Git, lanzamientos de GitHub) usan convencionalmente v1.2.3. La mayoría de los validadores aceptan ambas formas.
¿Qué sucede si olvido incrementar la versión mayor para un cambio disruptivo?
Los consumidores que usan rangos de intercalación recibirán automáticamente la actualización y sus compilaciones pueden fallar inesperadamente. Por eso la disciplina en SemVer es crítica — es un contrato social entre los autores de bibliotecas y los consumidores.