Что такое стабильность пакета в контексте управления зависимостями?

«Что такое стабильность пакета в контексте управления зависимостями?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Стабильность пакета — это показатель его готовности к использованию в production-среде. В экосистеме PHP, управляемой Composer, она определяется через семантическое версионирование (SemVer) и специальные метки.

Уровни стабильности (от наиболее к наименее стабильным):

  • stable — стабильный релиз, рекомендован для продакшена.
  • RC (Release Candidate) — кандидат на релиз, проходит финальное тестирование.
  • beta — бета-версия для раннего тестирования функциональности.
  • alpha — альфа-версия с сырой, активно разрабатываемой функциональностью.
  • dev — версия из ветки разработки (например, dev-main), абсолютно нестабильна.

Управление в composer.json: Вы можете глобально ограничить минимально допустимую стабильность для всех пакетов и точечно разрешить нестабильные версии для конкретных зависимостей.

{
    "minimum-stability": "stable",
    "prefer-stable": true,
    "require": {
        "vendor/stable-package": "^2.0",
        "vendor/experimental-package": "dev-feature-branch as 1.0.x-dev"
    }
}

Практика: В production мы всегда выставляем "minimum-stability": "stable" и "prefer-stable": true. Пакеты с метками dev, alpha или beta подключаем только в разработке, явно указывая их в require или require-dev, и только при острой необходимости протестировать новый функционал.