Изменение пакета зависимостей Composer - PullRequest
0 голосов
/ 09 января 2019

Как я могу изменить файл composer.json внешнего пакета, только изменив файл composer.json моего собственного проекта?

Это только для целей тестирования. Мне нужно проверить, совместим ли пакет с очень новой версией другого пакета.

Мой проект composer.json:

{
    "require": {
        "foo/framework": "1.2.0",
        "bar/extension": "1.1.0"
    }
}

Внешний пакет (bar/extension) composer.json:

{
    "require": {
        "foo/framework": "1.2.0"
    }
}

Так что это, очевидно, работает. Но скажем, я хочу иметь новую версию foo/framework, которая 1.3.0. Это не будет работать, потому что bar/extension зависит от старой версии.

Используя только мой проект composer.json, как я могу изменить требования к пакету bar/extension?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Основная идея: если bar/extension зависит от более старых версий, вам не следует использовать более новые версии foo/framework, поскольку это может быть несовместимо с более новой версией и приведет к ошибкам в вашем приложении.

Но если bar/extension в диапазоне версий и вы хотите использовать самую новую версию из этого диапазона, вы можете указать это с помощью директивы конфликта .

Или даже вы можете попробовать директиву replace .

0 голосов
/ 20 января 2019

Вы можете переопределить composer.json зависимости, используя репозиторий с типом package. В вашем composer.json добавьте что-то вроде этого (URL должны быть скорректированы):

"repositories": [
    {
        "type": "package",
        "package": {
            "name": "bar/extension",
            "version": "1.1.0",
            "dist": {
                "url": "https://github.com/bar/extension/archive/1.1.0.zip",
                "type": "zip"
            },
            "require": {
                 "foo/framework": "1.2.0 || 1.3.0"
            }
            // rest of necessary settings from original bar/extension composer.json 
        }
    }
],

Обратите внимание, что тип package очень негибкий и создает много проблем - я бы не рекомендовал использовать его для чего-либо другого, кроме тестирования. На практике может быть лучше просто разветвить пакет и использовать репозиторий vcs, чтобы использовать его в своем проекте - вы сможете внести необходимые изменения в пакет и предложить его как запрос на извлечение в апстрим (или просто используйте вилку постоянно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...