Вопрос с собеседования · 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 минут бесплатно.

Разбор собеседования