Caret-диапазон (^1.2.3)

Диапазон «^1.2.3» разложен на >=1.2.3 <2.0.0-0: видно, какие версии проходят, почему пререлиз 1.2.3-alpha.1 не совпадает и где ближайшая несовпавшая.

ПресетСтраница примера инструмента

Caret-диапазон (^1.2.3) — поля заполнены примером, их можно менять. Настройки уедут в ссылку «Поделиться», а заголовок страницы и вкладки описывают исходный пресет, а не текущие поля.

Вернуться к обычному виду инструмента: Семантические версии и диапазоны

Пустой ввод: введите диапазон и список версий.

Перебор патча до 20, затем минор, затем мажор (1.2.20 → 1.3.0 → … → 1.20.20 → 2.0.0); максимум 200 версий, пререлиз и build стартовой отбрасываются.

Диапазон разложен на компараторы

  • >=1.2.3 И <2.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), оператор &&, ведущие нули в сегментах.

Расчёт идёт на встроенном движке, без внешних библиотек.

Последние диапазоны

Готовые примеры