Как пользоваться
- Введите Версия, например 1.4.0, и при желании версию в поле Сравнить с, чтобы сравнить их.
- Выберите Повышение, чтобы увидеть следующую версию. Для повышения Предрелиз назовите предрелиз в поле Название предрелиза.
- Введите Диапазон, чтобы проверить, входит ли в него версия, и прочитайте Как читается диапазон, чтобы понять, что означает каждая его часть.
- Прочитайте Версия после повышения, Порядок и Проверка диапазона, чтобы получить нужный ответ.
Как сравниваются версии
SemVer 2.0.0 сравнивает основной, минорный и патч-номера как числа. Версия с меткой предрелиза идёт раньше той же версии без неё. Идентификаторы предрелиза сравниваются по одному: числа как числа, текст по порядку символов ASCII, а число раньше текста. Метаданные сборки, часть после +, в сравнении не участвуют.
- Порядок примеров из спецификации: 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.
- Начальная v, как в v1.4.0, принимается и в версию не входит.
Как работает повышение
Повышение основной версии увеличивает первое число и сбрасывает два других в 0. Минорное и патч-повышение делают то же для своей части. Версия, которая ещё является предрелизом, теряет метку, если повышение всё равно выпускает релиз: 1.0.0-alpha становится 1.0.0 при повышении основной версии, как и в node-semver. Повышение предрелиза начинает следующий патч с названием, которое вы задали, например 1.4.1-beta.0, или увеличивает последнее число существующего предрелиза, например beta.1 до beta.2.
Как читаются диапазоны
Синтаксис диапазонов следует node-semver, пакету, который использует npm, и его описанию грамматики в README. Каждая запись означает сравнения: ^1.3.0 значит >=1.3.0 <2.0.0-0, ~1.2.3 значит >=1.2.3 <1.3.0-0, а 1.2.x значит >=1.2.0 <1.3.0-0. Все сравнения внутри одного набора должны выполняться. Наборы, соединённые ||, — это варианты, а пустой набор принимает любую версию, как и *.
Предрелизы и диапазоны
Предрелиз вроде 1.5.0-beta.1 входит в диапазон, только если одно из сравнений в его наборе называет ту же 1.5.0 с меткой предрелиза. Незавершённые версии поэтому по умолчанию остаются вне диапазонов, как объясняет README node-semver. Проверка на этой странице следует этому правилу.
Пример: 1.4.0 с минорным повышением и ^1.3.0 || 2.x
Версия 1.4.0 выше, чем 1.4.0-beta.2, потому что релиз выше своего предрелиза. Минорное повышение даёт 1.5.0. Диапазон ^1.3.0 || 2.x читается как >=1.3.0 <2.0.0-0 или >=2.0.0 <3.0.0-0, и 1.4.0 входит в первый набор.
| Ввод | Результат |
|---|---|
| 1.4.0 в сравнении с 1.4.0-beta.2 | 1.4.0 выше, чем 1.4.0-beta.2. |
| Минорное повышение 1.4.0 | 1.5.0 |
| 1.4.0 в ^1.3.0 || 2.x | Версия 1.4.0 входит в диапазон ^1.3.0 || 2.x. |
Частые вопросы
Совпадает ли версия 1.0.0+build.1 с версией 1.0.0?
Для порядка и диапазонов да. Часть после + не участвует в приоритете SemVer, поэтому обе версии стоят на одном месте в порядке. Страница всё равно показывает текст сборки, чтобы его было видно.
Почему 1.4.0-beta.2 ниже, чем 1.4.0?
Предрелиз нестабилен и может не выполнять совместимость, которую обещает его номер, поэтому SemVer ставит его раньше релиза с теми же номерами. Значит, 1.4.0-beta.2 идёт перед 1.4.0, а 1.4.0 — перед 1.4.1.
Принимает ли ^1.3.0 версию 2.0.0?
Нет. Диапазон с ^ сохраняет первое слева ненулевое число, поэтому ^1.3.0 означает от 1.3.0 включительно и до 2.0.0 не включая. Добавьте || 2.x, если вторую основную версию тоже нужно принимать, как в примере.
В чём разница между ~1.2 и ^1.2?
Диапазон с ~, то есть ~1.2, означает >=1.2.0 <1.3.0-0, поэтому он принимает изменения патча вроде 1.2.9 и отклоняет 1.3.0. Диапазон с ^, то есть ^1.2, означает >=1.2.0 <2.0.0-0, поэтому он принимает и 1.3.0, и 1.9.9, но не 2.0.0.
Почему диапазон отклоняет 1.5.0-beta.1?
Предрелизы не включаются, если сравнение не называет ту же версию с меткой предрелиза, например >=1.5.0-beta.0. node-semver выбрал такое правило, потому что предрелизы быстро меняются и могут что-то сломать.
Отправляются ли мои версии на сервер?
Нет. Версия, диапазон и сравнение читаются и проверяются в вашем браузере, а ничего из введённого не сохраняется.
Источники
- Semantic Versioning 2.0.0, спецификация (на английском)
- README node-semver: диапазоны и грамматика диапазонов, npm (на английском)
- README node-semver: метки предрелизов, npm (на английском)
- Репозиторий node-semver, лицензия ISC, npm (на английском)
Цифры и текст в последний раз проверены вторник, 10 ноября 2026 г..