Вопрос с собеседования · Frontend
Что означают версии ^1.2.3 и ~1.2.3 и как обновлять зависимости?
JuniorВыкатка и эксплуатация
Ещё спрашивают так:
- Что такое семантическое версионирование?
Коротко
Semver: MAJOR.MINOR.PATCH — major ломает совместимость, minor добавляет функции, patch исправляет ошибки. ^1.2.3 разрешает обновления до <2.0.0 (minor и patch), ~1.2.3 — только patch (<1.3.0), 1.2.3 — точно. Обновляют регулярно и понемногу (Renovate, Dependabot) с прогоном тестов; major-версии — отдельно, читая changelog и гайд по миграции.
- Версии 0.x: ^0.2.3 разрешает только patch — до 1.0 API нестабилен
- Обновления закрывают уязвимости — откладывать годами опасно
- Проверять размер бандла после обновления крупных пакетов
Подробно
Пример: зависимость ^4.17.0 получит 4.18.1, но не 5.0.0. Если пакет нарушил semver и сломал API в minor — спасёт lock-файл и тесты в CI.
Что хотят услышать
- Смысл MAJOR.MINOR.PATCH.
- ^ и ~.
- Регулярные обновления с тестами.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗^1.2.3 разрешает обновление до 2.0.0, а ~1.2.3 — до 1.3.0
- ✗~1.2.3 разрешает любые minor-версии, а ^1.2.3 — только patch-обновления внутри 1.2.x
- ✓MAJOR ломает совместимость, MINOR — функции, PATCH — исправления; ^ — minor и patch, ~ — patch
- ✗Обновлять зависимости не нужно, если всё работает
Связанные вопросы
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.