Cómo se usa
- Escriba una Versión, como 1.4.0, y, si quiere, una versión en Comparar con para ordenarla frente a ella.
- Elija una Subida para ver la siguiente versión. Para una subida de Prelanzamiento, dé nombre al prelanzamiento en Nombre del prelanzamiento.
- Escriba un Rango para comprobar si la versión lo cumple, y lea Cómo se lee el rango para ver qué significa cada parte.
- Lea Versión tras la subida, Orden y Comprobación del rango para la respuesta que necesite.
Cómo se ordenan las versiones
SemVer 2.0.0 compara los números de versión mayor, menor y de parche como números. Una versión con etiqueta de prelanzamiento va antes que la misma versión sin ella. Los identificadores de prelanzamiento se comparan uno a uno: los números como números, el texto en orden ASCII, y un número antes que un texto. Los metadatos de compilación, la parte posterior a +, no cuentan.
- El orden de los ejemplos de la especificación: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-alpha.beta, 1.0.0-beta, 1.0.0-beta.2, 1.0.0-beta.11, 1.0.0-rc.1, 1.0.0.
- Una v inicial, como en v1.4.0, se acepta y no forma parte de la versión.
Cómo funciona una subida
Una subida mayor aumenta el primer número y pone los otros dos a 0. Una subida menor o de parche hace lo mismo con su parte. Una versión que todavía es un prelanzamiento pierde su etiqueta cuando la subida ya la convertiría en versión final: 1.0.0-alpha pasa a 1.0.0 con una subida mayor, como hace node-semver. Una subida de prelanzamiento inicia el siguiente parche con el nombre que dé, como 1.4.1-beta.0, o suma uno al último número de un prelanzamiento existente, como beta.1 a beta.2.
Cómo se leen los rangos
La sintaxis de rangos sigue a node-semver, el paquete que usa npm, y su gramática del README. Cada forma representa comparadores: ^1.3.0 significa >=1.3.0 <2.0.0-0, ~1.2.3 significa >=1.2.3 <1.3.0-0, y 1.2.x significa >=1.2.0 <1.3.0-0. Los comparadores de un mismo conjunto deben cumplirse todos. Los conjuntos unidos por || son alternativas, y un conjunto vacío acepta cualquier versión, como hace *.
Prelanzamientos y rangos
Una versión de prelanzamiento, como 1.5.0-beta.1, cumple un rango solo cuando uno de los comparadores de su conjunto tiene la misma 1.5.0 con una etiqueta de prelanzamiento. Las versiones no terminadas quedan fuera de los rangos por defecto, como explica el README de node-semver. La comprobación de esta página sigue esa regla.
Ejemplo resuelto: 1.4.0 con una subida menor y ^1.3.0 || 2.x
La versión 1.4.0 es mayor que 1.4.0-beta.2, porque una versión final es mayor que su prelanzamiento. Una subida menor da 1.5.0. El rango ^1.3.0 || 2.x se lee como >=1.3.0 <2.0.0-0 o >=2.0.0 <3.0.0-0, y 1.4.0 cumple el primer conjunto.
| Dato | Resultado |
|---|---|
| 1.4.0 comparada con 1.4.0-beta.2 | 1.4.0 es mayor que 1.4.0-beta.2. |
| Subida menor de 1.4.0 | 1.5.0 |
| 1.4.0 en ^1.3.0 || 2.x | 1.4.0 cumple ^1.3.0 || 2.x. |
Preguntas frecuentes
¿Es 1.0.0+build.1 la misma versión que 1.0.0?
Para ordenar y para los rangos, sí. Los metadatos de compilación posteriores a + no cuentan en la precedencia de SemVer, así que las dos versiones ocupan el mismo lugar en un orden. La página muestra igualmente el texto de compilación para que pueda verlo.
¿Por qué 1.4.0-beta.2 es menor que 1.4.0?
Un prelanzamiento es inestable y puede no cumplir la compatibilidad que promete su número, así que SemVer lo coloca antes de la versión con los mismos números. Por eso 1.4.0-beta.2 va antes que 1.4.0, y 1.4.0 va antes que 1.4.1.
¿Acepta ^1.3.0 la versión 2.0.0?
No. Un rango con circunflejo mantiene el primer número distinto de cero, así que ^1.3.0 significa desde 1.3.0 y menor que 2.0.0. Escriba también || 2.x si quiere aceptar la segunda versión mayor, como hace el ejemplo.
¿Cuál es la diferencia entre ~1.2 y ^1.2?
El rango con virgulilla ~1.2 significa >=1.2.0 <1.3.0-0, así que acepta cambios de parche como 1.2.9 y rechaza 1.3.0. El rango con circunflejo ^1.2 significa >=1.2.0 <2.0.0-0, así que acepta también 1.3.0 y 1.9.9, pero no 2.0.0.
¿Por qué un rango rechaza 1.5.0-beta.1?
Los prelanzamientos quedan fuera salvo que un comparador nombre la misma versión con una etiqueta de prelanzamiento, como >=1.5.0-beta.0. node-semver toma esta decisión porque los prelanzamientos cambian deprisa y pueden romper cosas.
¿Se envían mis versiones a un servidor?
No. La versión, el rango y la comparación se leen y comprueban en su navegador, y no se guarda nada de lo que escribe.
Fuentes
- Versionado semántico 2.0.0, la especificación (en inglés)
- README de node-semver: rangos y gramática de rangos, npm (en inglés)
- README de node-semver: etiquetas de prelanzamiento, npm (en inglés)
- Repositorio de node-semver, licencia ISC, npm (en inglés)
Cifras y texto revisados por última vez el martes, 10 de noviembre de 2026.