как я могу установить один более новый пакет symfony с помощью flex - PullRequest
0 голосов
/ 08 мая 2020

Я хочу иметь приложение в symfony 3.4, но иметь symfony / dotenv в v4. Пакет dotenv в версии 4.4.8 поддерживает symfony / process 3.4.

Но когда я запускаю composer update, он терпит неудачу и перечисляет только 3.4. * В качестве возможных версий. Вероятно, это ограничено extra.symfony.require: 3.4. * В composer.json.

Я знаю, что это работает, по крайней мере, в некоторых случаях. У меня есть проект в symfony 3.4, который использует symfony/http-client 4.3. Это работает только потому, что нет более старой версии?

Где я могу найти дополнительную информацию об ограничении зависимостей с помощью symfony/flex?

Вот некоторые известные мне источники:

  1. https://symfonycasts.com/screencast/symfony5-upgrade/version-constraints#symfony -flex- symfony -extra-require-is-a-soft-requirements
  2. https://github.com/symfony/flex/blob/master/README.md
  3. https://flex.symfony.com/

И вот самый четкий:

Как composer ограничение `extra. symfony .require` применяется?

Когда extra.symfony.require является мягким требованием (текст из 1.), что это значит? Соответствует ли это 4.?


пример composer.json, который не запускается composer require symfony/dotenv:^4.0 (создан с помощью symfony new --version=3.4):

{
    "type": "project",
    "require": {
        "php": "^7.0.8",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "symfony/console": "3.4.*",
        "symfony/dotenv": "3.4.*",
        "symfony/flex": "^1.3.1",
        "symfony/framework-bundle": "3.4.*",
        "symfony/yaml": "3.4.*"
    },
    "config": {
        "preferred-install": {
            "*": "dist"
        },
        "sort-packages": true
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
    "replace": {
        "paragonie/random_compat": "2.*",
        "symfony/polyfill-ctype": "*",
        "symfony/polyfill-iconv": "*",
        "symfony/polyfill-php70": "*",
        "symfony/polyfill-php56": "*"
    },
    "conflict": {
        "symfony/symfony": "*"
    },
    "extra": {
        "symfony": {
            "allow-contrib": false,
            "require": "3.4.*"
        }
    }
}
...