Ответ
Стабильность пакета — это показатель его готовности к использованию в 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, и только при острой необходимости протестировать новый функционал.
Ответ 18+ 🔞
Слушай, а вот эта вся история со стабильностью пакетов — это ж, блядь, как выбор между поехать на проверенной тачке или сесть на самопал, который на ходу развалиться может. В мире 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"
}
}
А теперь практика, чувак: На боевом сервере, в продакшене, всегда выставляем "minimum-stability": "stable" и "prefer-stable": true. Это святое. Пакеты с метками dev, alpha или beta — это как гости с дурной репутацией. Пускаем их только на свою тестовую площадку, в require-dev, и то только если реально приперло и новую фичу срочно надо попробовать. А то так и до инцидента недалеко, где ты потом будешь охуевать, почему всё накрылось медным тазом.