Что такое Семантическое версионирование
Стандарт нумерации версий MAJOR.MINOR.PATCH
Семантическое версионирование (SemVer) — стандарт нумерации версий программного обеспечения в формате MAJOR.MINOR.PATCH, где каждая часть имеет определённый смысл.
Структура версии
- MAJOR (1.x.x) — несовместимые изменения API
- MINOR (x.1.x) — новый функционал с обратной совместимостью
- PATCH (x.x.1) — исправления багов с обратной совместимостью
- Pre-release — 1.0.0-alpha, 1.0.0-beta.1
- Build metadata — 1.0.0+build.123
Правила
- Начальная версия — 0.1.0
- Первый стабильный релиз — 1.0.0
- При увеличении MAJOR — сброс MINOR и PATCH
- При увеличении MINOR — сброс PATCH
- Версии сравниваются слева направо
Примеры изменений
- MAJOR: удаление функции, изменение сигнатуры метода
- MINOR: добавление нового endpoint, новый опциональный параметр
- PATCH: исправление бага, улучшение производительности
Инструменты
- npm — использует SemVer для пакетов
- Composer — PHP менеджер пакетов
- Maven — Java зависимости
- semantic-release — автоматизация релизов
- commitizen — структурированные коммиты
Преимущества
- Предсказуемость — понятно что ожидать от обновления
- Автоматизация — автоматическое определение версии
- Документирование — changelog из коммитов
- Совместимость — безопасные обновления зависимостей