Версии синхронизируются между:
package.json(полеversion)- Git tags (формат
v{version}) - GitHub Releases
- CHANGELOG.md
Шаг 1: Обновите CHANGELOG.md
- Откройте
CHANGELOG.md - Добавьте описание новой версии в начало файла (см. формат ниже)
- Сохраните файл
Шаг 2: Закоммитьте изменения
git add .
git commit -m "feat: prepare v{version} release"Шаг 3: Запустите release-it
# Для багфиксов (4.0.2 -> 4.0.3)
npm run release:patch
# Для новых функций (4.0.2 -> 4.1.0)
npm run release:minor
# Для breaking changes (4.0.2 -> 5.0.0)
npm run release:majorГотово! Release-it автоматически:
- ✅ Обновит версию в
package.json - ✅ Создаст commit
chore: release v{version} - ✅ Создаст git tag
v{version} - ✅ Запушит все на GitHub
- ✅ Создаст GitHub Release (если настроен GITHUB_TOKEN)
Никаких дополнительных команд не требуется! Release-it делает все автоматически благодаря настройкам в .release-it.json.
Перед реальным релизом можно проверить, что будет сделано:
npm run release:dry-runCHANGELOG.md обновляется вручную перед каждым релизом.
Рекомендуемый порядок действий:
- Перед запуском
release-it— обновите CHANGELOG.md с описанием изменений новой версии - Запустите
npm run release:patch/minor/major— release-it обновит версию в package.json и создаст tag - После релиза — проверьте, что CHANGELOG соответствует выпущенной версии
Следуйте существующему формату в CHANGELOG.md:
v{version}
Краткое описание изменений (опционально)
**Категория изменений:**
- Feat: описание новой функции
- Fix: описание исправления
- Refactor: описание рефакторинга
- Remove: описание удаленного функционала
- ...
v{предыдущая версия}
...v4.0.3
**Bug Fixes:**
- Fix: resolve marker color issue on mobile devices
- Fix: prevent unnecessary API requests on map load
**Improvements:**
- Refactor: optimize sensor data loading
- Feat: add keyboard navigation for tabs
v4.0.2
...✅ Включайте:
- Новые функции (Feat)
- Исправления багов (Fix)
- Breaking changes (с пометкой)
- Важные рефакторинги (Refactor)
- Удаленный функционал (Remove)
- Изменения в API или конфигурации
❌ Не включайте:
- Мелкие правки форматирования
- Обновления зависимостей без функциональных изменений
- Внутренние технические изменения без влияния на пользователей
- WIP (work in progress) изменения
# Посмотреть все коммиты с последнего релиза
git log $(git describe --tags --abbrev=0)..HEAD --oneline
# Посмотреть коммиты с деталями
git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"- %s (%h)"
# Посмотреть изменения в файлах
git diff $(git describe --tags --abbrev=0)..HEAD --statЕсли нужно обновить версию вручную (без release-it):
- Обновите CHANGELOG.md с описанием новой версии
- Обновите версию в
package.json - Создайте git commit:
git commit -am "chore: release v{version}" - Создайте git tag:
git tag v{version} - Запушьте изменения:
git push origin main && git push origin v{version}
release-it для автоматизации шагов 2-5.
# Версия из package.json
npm version
# Последний git tag
git describe --tags --abbrev=0
# Все версии
git tag --sort=-version:refnameДля автоматического создания GitHub Release нужен GitHub token:
- Создайте Personal Access Token с правами
repo - Добавьте в
.envили экспортируйте:export GITHUB_TOKEN=your_token_here
Или используйте GitHub CLI:
gh auth loginЕсли версии разошлись:
- Проверьте текущую версию:
npm versionиgit describe --tags - Обновите
package.jsonдо актуальной версии из git tag - В будущем используйте
release-itдля автоматизации
Проверьте:
- Установлен ли
release-it:npm list release-it - Правильно ли настроен
.release-it.json - Есть ли права на создание git tags и GitHub releases