wiistriker/composer-override-reqs-plugin

Plugin to override composer package requirements

1.0.0 2025-08-31 18:55 UTC

This package is auto-updated.

Last update: 2025-08-31 18:56:23 UTC


README

Latest Stable Version Latest Unstable Version Total Downloads License

Русская версия | English version

Русская версия

Для чего этот плагин?

Иногда при работе с Composer возникает проблема: некоторые пакеты имеют слишком жёсткие ограничения по версиям зависимостей.
Например, пакет dama/doctrine-test-bundle:6.7.5 требует:

"symfony/cache": "^4.4 || ^5.3 || ^6.0",
"symfony/framework-bundle": "^4.4 || ^5.3 || ^6.0"

Это означает, что пакет можно установить только вместе с Symfony 4.4, 5.3 или 6.0.
Однако на практике часто бывает так, что пакет вполне работает и с промежуточными версиями, например Symfony 5.0–5.2.

Как можно обойти ограничение?

Существуют стандартные варианты, но у них есть недостатки:

  • Использовать as в require
    Например:

    "symfony/cache": "5.0.11 as 5.3.14"

    Минус: нужно указывать точные версии вручную.

  • Форкнуть репозиторий
    Внести правки и подключить его через repositories.
    Минус: придётся поддерживать собственный форк.

Если по каким-то причинам эти методы вам (как и мне), не подошли, то можно попробовать данный плагин. Минус у данного плагина в том, что он использует Reflection, поэтому не гарантируется работа при выходе новых версий composer.

Установка и настройка

Установите плагин:

composer require --dev wiistriker/composer-override-reqs-plugin

Добавьте в composer.json секцию extra.requirements-override.override:

{
    "require": {
        "symfony/cache": "5.0.*",
        "dama/doctrine-test-bundle": "*"
    },
    "extra": {
        "requirements-override": {
            "override": {
                "dama/doctrine-test-bundle": {
                    "6.7.5": {
                        "symfony/cache": "^4.4 || ^5.0 || ^6.0",
                        "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0"
                    }
                }
            }
        }
    }
}

После этого запустите:

composer update

Теперь dama/doctrine-test-bundle установится и на Symfony 5.0, так как зависимости были переопределены.

English version

What is this plugin for?

Sometimes Composer packages come with overly strict dependency constraints.
For example, dama/doctrine-test-bundle:6.7.5 requires:

"symfony/cache": "^4.4 || ^5.3 || ^6.0"

This means the bundle can only be installed with Symfony 4.4, 5.3, or 6.0.
But in reality, it would also work just fine with Symfony 5.0–5.2.

How can we bypass this?

Typical workarounds exist, but each has drawbacks:

  • Use as in require
    Example:

    "symfony/cache": "5.0.11 as 5.3.14"

    Drawback: you must specify exact versions manually.

  • Fork the repository
    Modify the dependency constraints and include it via repositories.
    Drawback: you need to maintain your own fork.

If, for some reason, these methods (just like for me) didn’t work for you, you can try this plugin instead.
The downside of this plugin is that it relies on Reflection, so compatibility with future Composer releases is not guaranteed.

Installation & Usage

Install the plugin:

composer require --dev wiistriker/composer-override-reqs-plugin

Then add the extra.requirements-override.override section in your composer.json:

{
    "require": {
        "symfony/cache": "5.0.*",
        "dama/doctrine-test-bundle": "*"
    },
    "extra": {
        "requirements-override": {
            "override": {
                "dama/doctrine-test-bundle": {
                    "6.7.5": {
                        "symfony/cache": "^4.4 || ^5.0 || ^6.0",
                        "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0"
                    }
                }
            }
        }
    }
}

Finally, run:

composer update

Now dama/doctrine-test-bundle will install even with Symfony 5.0, since the dependency constraints were overridden.