ForHosting KIT · Utilidades de desarrollo

Compare números de versión semántica según SemVer

Sepa cuál de dos versiones va realmente primero: 1.0.0-alpha.1 es menor que 1.0.0-alpha.beta, porque una etiqueta numérica siempre queda por debajo de una palabra, y 2.10.0 supera correctamente a 2.9.0. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Primera versión
1.0.0-alpha.1
Segunda versión
1.0.0-alpha.beta
Obtiene
Comparación
less
Precedencia
-1
Versión mayor
1.0.0-alpha.beta

Compare dos números de versión semántica sin depender del orden lexicográfico, conversiones de coma flotante ni atajos propios de un gestor de paquetes. Esta capacidad valida ambas entradas conforme a Semantic Versioning 2.0.0 y aplica las reglas oficiales de precedencia a los componentes mayor, menor, parche y preliminar. Indica si la primera versión es menor, mayor o equivalente en precedencia a la segunda, e ignora correctamente los metadatos de compilación. Las versiones incompletas o no válidas generan un error de entrada claro, no un orden engañoso.

Compare versiones con las reglas que utilizan las publicaciones de software

Una comparación de cadenas normal produce respuestas erróneas para muchos números de versión. Por ejemplo, un orden lexicográfico puede colocar 2.10.0 antes de 2.9.0 porque compara el carácter 1 con el 9, mientras que una conversión numérica elimina el significado separado de las posiciones mayor, menor y parche. Este comparador analiza cada posición obligatoria por separado y las compara de izquierda a derecha.

También rechaza formatos flexibles, como la omisión del parche, una v inicial o un identificador numérico principal con cero inicial. Esta validación estricta resulta útil en scripts de despliegue, registros de paquetes, servicios de actualización y controles de CI, ya que los datos mal formados no pueden pasar inadvertidamente como publicaciones legítimas. Envíe las dos versiones exactamente como se publicaron.

El resultado incluye una precedencia con signo: menos uno indica que la primera es inferior, cero que son equivalentes y uno que la primera es superior. Un campo descriptivo facilita usar la misma respuesta en interfaces y condiciones de flujo.

Comprenda el orden preliminar y los metadatos de compilación

Los identificadores preliminares son donde más fallan los comparadores simplificados. Una publicación con sufijo preliminar tiene menor precedencia que la misma versión mayor, menor y de parche sin dicho sufijo; por eso 1.0.0-rc.1 es inferior a 1.0.0. Si ambas versiones son preliminares, los identificadores se comparan en secuencia.

Los numéricos se ordenan por magnitud, los no numéricos según el orden léxico ASCII y un identificador numérico siempre tiene menor precedencia que uno no numérico. Si todos los identificadores compartidos coinciden, la versión con más identificadores tiene mayor precedencia. Así se reproduce la progresión estándar desde alpha hasta beta y las versiones candidatas sin atribuir un significado especial a palabras concretas.

Los metadatos posteriores al signo más se validan, pero no intervienen en la precedencia. Por tanto, 1.0.0+linux y 1.0.0+windows son equivalentes aunque sus cadenas difieran.

Utilice una comparación estricta y segura en automatizaciones

Un resultado determinista puede convertirse en un punto de decisión pequeño y fiable dentro de sistemas mayores. Una canalización de publicación puede exigir que la versión propuesta supere a la desplegada. Un actualizador puede decidir si un manifiesto descargado representa una mejora, una reversión o una compilación equivalente.

Un conjunto de pruebas puede cubrir la secuencia preliminar canónica y rechazar etiquetas no válidas antes de publicar artefactos. La implementación no realiza solicitudes de red, no consulta el reloj y no utiliza valores aleatorios; las mismas entradas siempre ofrecen la misma salida. Los identificadores numéricos se comparan como cadenas de dígitos, en vez de convertirlos en números de JavaScript, para conservar el orden correcto incluso si un identificador válido supera el intervalo de enteros seguros.

La longitud de las entradas está limitada para mantener acotado el procesamiento.

Proteja una canalización de publicación

Confirme que una versión de paquete propuesta tenga mayor precedencia que la versión desplegada antes de publicarla.

Evalúe manifiestos de actualización

Determine si una publicación remota es una mejora, una reversión o una compilación equivalente sin que influyan los metadatos.

Valide secuencias preliminares

Compruebe el orden de versiones alpha, beta, candidatas y finales, y rechace cadenas Semantic Versioning mal formadas.

¿Qué significa el valor de comparación?

Una precedencia de -1 indica que la primera versión es inferior, 0 que ambas son equivalentes y 1 que la primera es superior.

¿Influyen los metadatos de compilación en el resultado?

No. Los metadatos se validan, pero Semantic Versioning los excluye de las comparaciones de precedencia.

¿Una versión preliminar es inferior a la publicación final correspondiente?

Sí. Con números mayor, menor y de parche idénticos, una versión con identificadores preliminares tiene menor precedencia que la final.

¿Se admiten ceros iniciales?

Los identificadores numéricos mayor, menor, parche y preliminares no pueden tener ceros iniciales, salvo el dígito cero por sí solo.

¿Puedo incluir una v inicial u omitir el número de parche?

No. Las entradas deben ser cadenas estrictas de Semantic Versioning 2.0.0, como 1.2.3 o 1.2.3-rc.1.

¿Cuánto cuesta?

El ejecutor del navegador está disponible para consultas interactivas.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/dev2/semver-compare

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/dev2/semver-compare \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"first_version":"2.1.0-rc.1","second_version":"2.1.0"}'
{
  "first_version": "2.1.0-rc.1",
  "second_version": "2.1.0"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.semver_compare",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

max_chars_per_version1024
HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Comprenda el orden preliminar y los metadatos de compilación

Si la precedencia es igual, greater_version es null porque ninguna entrada supera a la otra.

Utilice una comparación estricta y segura en automatizaciones

Use el ejecutor del navegador para una consulta interactiva o llame a la API por $0.002 en un flujo repetible. Trate invalid_input como un problema de calidad de datos que debe corregirse.

Ver la documentación completa del KIT →