Коротко: используйте только стабильные релизы при указании версий в зависимостях в своих пакетах.
Подробно.
В composer есть флаг
minimum-stability, который используется для отбора пакетов на основе стабильности при установке. По умолчанию он равен stable, т.е. устанавливаются только стабильные пакеты. Вы можете изменить это поведение, добавив параметр "minimum-stability" в composer.json. Обратите внимание, что этот параметр применяется только к
корневому пакету - вашему основному composer.json файлу.
Что происходит, когда вы вводите команду
composer require nullref/yii2-cms:
- Создается composer.json файл, в котором не определен minimum-stability, поэтому он рассматривается как stable.
- В корневом пакете у вас определен в зависимостях только один пакет - nullref/yii2-cms, который имеет стабильный релиз - он и начинает устанавливаться.
- Пакет nullref/yii2-cms имеет в зависимостях пакет nullref/yii2-admin с версией dev-master. Это нестабильный релиз и он не может быть установлен, т.к. в корневом пакете minimum-stability считается равным stable.
Что можно сделать:
- Установить minimum-stability в dev в корневом composer.json файле. В этом случае также следует добавить "prefer-stable": true, чтобы по возможности ставились стабильные пакеты.
- Использовать stability flags, явно указав флаг в корневом пакете: "nullref/yii2-admin": "@dev".
- Убрать dev-master отовсюду из зависимостей, выпускать релизы и указывать версии любым из доступных способов.
И в заключение привожу
ссылку на статью с подробным объяснением minimum-stability.