Composer выпуск пакета - PullRequest
       12

Composer выпуск пакета

0 голосов
/ 27 апреля 2020

Я работаю над проектом, который использует composer для управления зависимостями:

{
  "require": {
    "doctrine/annotations": "1.8.0",
    "doctrine/dbal": "2.9.3",
    "doctrine/orm": "2.7.1",
    "doctrine/reflection": "1.2.0",
    "giggsey/libphonenumber-for-php": "8.11.5",
    "guzzlehttp/guzzle": "6.5.2",
    "james-heinrich/getid3": "v1.9.19",
    "php-extended/php-http-message-factory-psr17": "2.0.0",
    "phpoffice/phpspreadsheet": "1.10.1",
    "psr/event-dispatcher": "1.0.0",
    "sabre/vobject": "4.2.2",
    "sabre/xml": "2.1.3",
    "spiral/roadrunner": "1.7.0",
    "symfony/browser-kit": "4.4.4",
    "symfony/cache": "v4.4.4",
    "symfony/class-loader": "v3.4.38",
    "symfony/config": "4.4.4",
    "symfony/console": "4.4.4",
    "symfony/css-selector": "4.4.4",
    "symfony/debug": "4.4.4",
    "symfony/dependency-injection": "4.4.4",
    "symfony/dom-crawler": "4.4.4",
    "symfony/error-handler": "4.4.4",
    "symfony/event-dispatcher": "v4.4.4",
    "symfony/expression-language": "4.4.4",
    "symfony/filesystem": "4.4.4",
    "symfony/finder": "4.4.4",
    "symfony/http-foundation": "4.4.4",
    "symfony/http-kernel": "4.4.4",
    "symfony/mailer": "4.4.4",
    "symfony/mime": "4.4.4",
    "symfony/polyfill-ctype": "1.14.0",
    "symfony/polyfill-intl-idn": "1.14.0",
    "symfony/polyfill-mbstring": "1.14.0",
    "symfony/polyfill-php72": "1.14.0",
    "symfony/polyfill-php73": "1.14.0",
    "symfony/process": "4.4.4",
    "symfony/service-contracts": "2.0.1",
    "symfony/validator": "4.4.4",
    "symfony/var-dumper": "4.4.4",
    "symfony/var-exporter": "4.4.4",
    "symfony/yaml": "4.4.4"
  }
}

Я пытаюсь добавить новую зависимость в проект, а именно symfony/contracts. Этот пакет заменяет несколько других пакетов Symfony, в том числе пакет symfony/event-dispatcher-contracts, который косвенно требуется в качестве зависимости в проекте.

Однако при выполнении команды composer require symfony/contracts появляется сообщение об ошибке что я не могу понять:

# composer require symfony/contracts:2.0.1
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - don't install symfony/event-dispatcher-contracts v1.1.7|don't install symfony/contracts v2.0.1
    - don't install symfony/contracts v2.0.1|remove symfony/event-dispatcher-contracts v1.1.7
    - don't install symfony/contracts v2.0.1|don't install symfony/event-dispatcher-contracts v1.1.7
    - Installation request for symfony/contracts 2.0.1 -> satisfiable by symfony/contracts[v2.0.1].
    - Installation request for symfony/event-dispatcher-contracts (locked at v1.1.7) -> satisfiable by symfony/event-dispatcher-contracts[v1.1.7].


Installation failed, reverting ./composer.json to its original content.

Я пытался удалить все, кроме composer.json и выполнить переустановку, но в результате возникла та же ошибка.

Еще одна загадочная проблема заключалась в том, что * Пакет 1017 * явно не заблокирован в composer.json для определенной версии, однако в сообщении об ошибке указывается версия v1.1.7 вместо самой последней, которая на данный момент составляет 2.0.1. Просматривая файл composer.lock, я вижу, что есть одна директива require, которая включает этот пакет, определяемая как symfony/event-dispatcher требует "symfony/event-dispatcher-contracts": "^1.1". Это действительно вынуждает symfony/event-dispatcher-contracts к версии 1.1.7, но я не могу объяснить, почему он вызывает установку пакета, вместо того, чтобы заменить его на symfony/contracts.

Как я могу добавить symfony/contracts в этот проект и удалите зависимость symfony/event-dispatcher-contracts (которая входит в пакет symfony/contracts).

1 Ответ

0 голосов
/ 27 апреля 2020

symfony/contracts заменяет symfony/event-dispatcher-contracts и другие пакеты. Проверьте, какой из других ваших пакетов требует этот пакет, через composer why symfony/event-dispatcher-contracts. Я полагаю, что вам нужно обновить любой из ваших других пакетов, прежде чем вы сможете начать использовать пакет унифицированных контрактов.

В текущей настройке symfony/event-dispatcher требует указанных c контрактов в v1.1. Устанавливаемый пакет заменяет эти контракты, но только те из v2. Установка symfony/contracts с ограничением версии ^1.1 может быть лучшим решением, если вы не хотите обновлять symfony/event-dispatcher до v5 - это зависит от v2 контрактов

...