wiistriker / composer-override-reqs-plugin
Plugin to override composer package requirements
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:composer-plugin
Requires
- composer-plugin-api: ^2.0
This package is auto-updated.
Last update: 2025-08-31 18:56:23 UTC
README
Русская версия | 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.