• Почему composer не может решить зависимости?

    @SilverSlice
    Коротко: используйте только стабильные релизы при указании версий в зависимостях в своих пакетах.

    Подробно.
    В 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.
    Ответ написан
    1 комментарий