Как заставить зависимость использовать исправленную версию своей зависимости? - PullRequest
1 голос
/ 24 марта 2020

Мой проект имеет зависимость vendor1/dep1. Этот пакет имеет собственную зависимость vendor2/dep2. В последнем пакете была ошибка, которую я исправил и отправил свой патч обратно в виде запроса на извлечение. Но сопровождающий не отвечает, и я хочу использовать свою исправленную версию этой под-зависимости.

Для этого мне пришлось форкнуть пакет vendor1/dep1, изменив его composer.json на:

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/me/dep2"
        }
    ],
    "require": {
        "vendor2/dep2": "dev-master",

и передайте его в ветку patched-dep2.

После этого я также обновил свой проект composer.json:

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/me/dep1"
        }
    ],
    "require": {
        "vendor1/dep1": "dev-patched-dep2",

Очень сложно, и это не так т работа. Понятия не имею почему. Любые предложения приветствуются.

1 Ответ

1 голос
/ 19 апреля 2020

repositories настройки игнорируются из зависимостей - этот параметр действует только для composer.json проекта root. Таким образом, ваши настройки в vendor1/dep1 fork игнорируются.

Вам необходимо определить репозитории для этих двух вилок в composer.json вашего основного проекта:

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/me/dep1"
    },
    {
        "type": "vcs",
        "url": "https://github.com/me/dep2"
    }
],
"require": {
    "vendor1/dep1": "dev-patched-dep2"
}

Но в вашем случае вы сможете изменить это, не разветвляясь dep1:

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/me/dep2"
    }
],
"require": {
    "vendor1/dep1": "1.1.1",
    "vendor2/dep2": "dev-master as 1.1.2"
}

Где вместо 1.1.1 и 1.1.2 вы должны использовать реальные версии для этих пакетов. dev-master as 1.1.2 должен переопределить ограничение из dep1, а composer должен использовать основную ветку от вашей вилки.

...