OR-диапазон через ||
Диапазон «^1.0.0 || ^3.0.0» — две AND-группы, связанные «или»: 2.x не проходит ни в одну, инструмент показывает это построчно.
ПресетСтраница примера инструмента
OR-диапазон через || — поля заполнены примером, их можно менять. Настройки уедут в ссылку «Поделиться», а заголовок страницы и вкладки описывают исходный пресет, а не текущие поля.
Вернуться к обычному виду инструмента: Семантические версии и диапазоны
Пустой ввод: введите диапазон и список версий.
Перебор патча до 20, затем минор, затем мажор (1.2.20 → 1.3.0 → … → 1.20.20 → 2.0.0); максимум 200 версий, пререлиз и build стартовой отбрасываются.
Диапазон разложен на компараторы
- >=1.0.0 И <2.0.0-0 ИЛИ >=3.0.0 И <4.0.0-0
Как считается
Семантика — поднабор npm semver по спецификации semver.org. Порядок версий: мажор → минор → патч числом; пререлиз меньше релиза того же корня; числовые идентификаторы пререлиза раньше строковых; build-метаданные (+build) в сравнении игнорируются.
Мажор, минор и патч — целые от 0 до 9007199254740991 (2^53 − 1). Если раскрытие caret, tilde, x-range или следующий шаг генератора выходит за этот предел, расчёт отклоняется с ошибкой, без округления; используйте явные сравнения с допустимыми границами. Числовые идентификаторы пререлиза сохраняются без ограничения количества цифр и сравниваются точно как десятичные числа, а не как буквенные строки. Ведущие нули запрещены в core и чисто числовых пререлизах, но допустимы в build. Build сохраняется в исходных строках; в декомпозиции и итоговых версиях он опускается.
Поддерживается
^1.2.3— caret: не ниже 1.2.3 и в пределах одного мажора (>=1.2.3 <2.0.0-0); для 0.x границы сужаются по npm.~1.2.3— tilde: не ниже и в пределах минора (<1.3.0-0);~1.2и~1расширяются как в npm.1.2.x,1.x— частичные версии с вилдкардом сегмента (то же, что1.2).>=1.4 <2— AND-условия через пробел; операторы> >= < <= =.^1.0.0 || >=3— OR через||.1.0.0-alpha.1— пререлизы. Как в npm: пререлиз совпадает только с группой условий, где задан пререлиз того же корня (кроме точного совпадения).
Не поддерживается
- hyphen-диапазоны не поддерживаются. Пример только для
1.2 - 2.0:>=1.2.0 <2.1.0-0. - вилдкарды целиком
*/x, вилдкард в мажорной позиции (x.2.3,^x.2.3) и пустой диапазон — замените на>=0.0.0или укажите мажор числом. - URL-, git- и тег-диапазоны, префикс
v(v1.2.3), оператор&&, ведущие нули в сегментах.
Расчёт идёт на встроенном движке, без внешних библиотек.
Последние диапазоны
Готовые примеры
- Caret-диапазон (^1.2.3)Диапазон «^1.2.3» разложен на >=1.2.3 <2.0.0-0: видно, какие версии проходят, почему пререлиз 1.2.3-alpha.1 не совпадает и где ближайшая несовпавшая.
- Tilde-диапазон (~2.1.4)Диапазон «~2.1.4» — только патчи: >=2.1.4 <2.2.0-0. Набор версий показывает границу на 2.2.0 и ближайшую несовпавшую сверху.
- OR-диапазон через ||Диапазон «^1.0.0 || ^3.0.0» — две AND-группы, связанные «или»: 2.x не проходит ни в одну, инструмент показывает это построчно.
- Пререлизы (1.0.0-alpha)Правило npm: пререлиз совпадает только с группой, где сам указан пререлиз на том же корне. Пример с alpha/beta/rc и пояснением причины отказа.