PureTools

Versionamiento Semántico: Qué Significa Realmente 2.1.0

PureTools Team· 7 min de lectura
Versionamiento Semántico: Qué Significa Realmente 2.1.0

Semver: Un Contrato Entre Tú y Tus Usuarios

Versionamiento Semántico (semver) es un esquema de versionamiento que comunica la naturaleza de los cambios. Cuando ves 2.1.0 → 2.2.0, sabes que es una adición compatible. Cuando ves 2.1.0 → 3.0.0, sabes que algo se rompió.

El Formato: MAJOR.MINOR.PATCH

ComponenteCuándo IncrementarEjemplo
MAJORBreaking changes — API incompatible con versión anterior1.0.0 → 2.0.0
MINORNuevas features — adiciones compatibles1.0.0 → 1.1.0
PATCHBug fixes — correcciones compatibles1.0.0 → 1.0.1

Qué Cuenta Como Breaking Change

  • Eliminar una función o método público
  • Cambiar parámetros de función
  • Cambiar tipos de retorno
  • Cambiar comportamiento por defecto
  • Dejar de soportar un runtime
  • Renombrar módulos exportados

Rangos de Versión en package.json

{
  "dependencies": {
    "exacto":    "1.2.3",       // Solo 1.2.3
    "caret":     "^1.2.3",      // >=1.2.3 <2.0.0 (más común)
    "tilde":     "~1.2.3",      // >=1.2.3 <1.3.0
    "wildcard":  "1.x"           // >=1.0.0 <2.0.0
  }
}
RangoInstalaNivel de Riesgo
^1.2.31.2.3 hasta 1.x.xBajo — sin breaking dentro del major
~1.2.31.2.3 hasta 1.2.xMuy bajo — solo patches
1.2.3Exactamente 1.2.3Ninguno — pero sin updates de seguridad

Versiones Pre-release

1.0.0-alpha.1    // Desarrollo inicial, inestable
1.0.0-beta.1     // Feature-complete, puede tener bugs
1.0.0-rc.1       // Release candidate, listo para pruebas
1.0.0            // Release estable

Reglas Prácticas

  • Empieza en 0.1.0 para proyectos nuevos.
  • Lanza 1.0.0 cuando tu API es usada en producción por otros.
  • Usa ^ (caret) en package.json — es el estándar.
  • Usa lockfiles para fijar versiones exactas en producción.
  • Automatiza con conventional commits + semantic-release o changesets.

Parsea versiones: Formateador JSON — valida y formatea tu package.json.