[BUG] minVersion returns 0.0.0 when a 0.0.0 prerelease is the true minimum
Los mantenedores suelen responder en 4 días
@thisisshivamtiwari ya está trabajando en esto.
Desde el 29/10/2026.
- #936 de @thisisshivamtiwari — abierto
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript, node.js
- Área
- backend
Línea de trabajo
Empieza por el atajo señalado en el issue en ranges/min-version.js y luego revisa las pruebas relacionadas con minVersion y cómo se comparan las versiones preliminares con 0.0.0. Reproduce los ejemplos del issue y comprueba que se devuelva correctamente el mínimo para >=0.0.0-alpha <1.0.0 y * con includePrerelease. Se considera terminado cuando esos casos pasan sin cambiar el comportamiento documentado de la versión más baja.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Is there an existing issue for this?
- I have searched the existing issues
Current Behavior
This is admittedly a bit pedantic, but minVersion seems to treat 0.0.0 as a special case. A prerelease lower bound is respected on every tuple except 0.0.0:
semver.minVersion('>=1.0.0-alpha <2.0.0').version // '1.0.0-alpha'
semver.minVersion('>=0.0.1-alpha <1.0.0').version // '0.0.1-alpha'
semver.minVersion('>=0.0.0-alpha <1.0.0').version // '0.0.0'
The same thing happens with includePrerelease, where 0.0.0-0 satisfies * but 0.0.0 is returned:
semver.minVersion('*', { includePrerelease: true }).version // '0.0.0'
This comes from the shortcut at the top of ranges/min-version.js, which tries 0.0.0 before 0.0.0-0 and returns the first one that matches.
Expected Behavior
I'd expect '0.0.0-alpha' and '0.0.0-0' respectively, since the README describes minVersion as returning "the lowest version that can match the given range", and the rest of the library agrees that these sort below 0.0.0 (lt, sort, minSatisfying).
I couldn't find anything (docs, tests, or the original PR npm/node-semver#241) suggesting 0.0.0 is meant to be special here, so I suspect the shortcut just wasn't written with prerelease lower bounds in mind. But if this is intentional it might be worth documenting.
Steps To Reproduce
npm install [email protected]- Run
node -e "console.log(require('semver').minVersion('>=0.0.0-alpha <1.0.0').version)" - See
0.0.0
Environment
- npm: 11.20.0
- Node: 26.12.1
- OS: macOS 26.6.1
- platform: Apple Silicon (arm64)
- semver: 7.8.5 (same code on
main)
AI disclosure: this issue was discovered with AI assistance
- Lenguaje dominante
- JavaScript
- Estrellas
- 5.5k
- Forks
- 622
- Merge medio
- 4 d 23 h
- PR fusionados (30 d)
- 4
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de npm/node-semver
-
[BUG] new Range(comparator).test() throws TypeError for a prerelease versionPosiblemente ocupada @Boulea7 la tomó hace 29 días. AbiertoBug Needs Triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
npm/node-semver#908 ·
Los mantenedores suelen responder en 4 días
-
semver:major
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
npm/node-semver#108 · 6 comentarios ·
Los mantenedores suelen responder en 4 días
-
[BUG] intersects() still returns true for an empty range against "*" (follow-up to #521)Posiblemente ocupada @json-open-source la tomó hace 29 días. AbiertoBug Needs Triage
Dificultad 3/5 1-2 días Aptitud para principiantes 64/100
npm/node-semver#909 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
[BUG] `* || 1.2.3-alpha` won't match `1.2.3-alpha` (when includePrerelease = false)Posiblemente ocupada @x0Lazarus la tomó hace 35 días. AbiertoBug Needs Triage
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
npm/node-semver#906 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
[BUG] gtr and ltr are wrong when a range has two bounds on the same sidePosiblemente ocupada @Prafyl la tomó hace 40 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
npm/node-semver#904 ·
Los mantenedores suelen responder en 4 días
Todos los issues de npm/node-semver
Issues similares
-
Let TypeScript accept an initial object in ReactiveDictPosiblemente ocupada @yograj-vijay-yadav la tomó hoy. Abiertobug good first issue help wanted workshop
Dificultad 2/5 1-3 horas Aptitud para principiantes 92/100
meteor/meteor#14919 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
akitaonrails/FrankMD#268 ·
Los mantenedores suelen responder en 1 día
-
account: profile
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 5 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
mfreed7/xslt_polyfill#65 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día