我有两个 Composer 包,它们需要相同依赖项的不同版本。我找到了像this这样的答案,可以帮助我诊断问题,但不能帮助我解决问题。
套餐A(
amphp/phpunit-util
)需要phpunit/phpunit ^9
;
套餐 B(自制)需要 phpunit/phpunit ^11
。
我在
require
命令上寻找某种选项,该选项允许以“沙盒”方式安装所需版本的软件包,这样只有软件包 A 会使用旧版本,而其他软件包可以使用旧版本新的。我找不到任何东西,除非自动加载魔法,这似乎是可以实现的。
我有什么选择?我可以加载
phpunit ^11
但以某种方式说服软件包 A phpunit ^9
可用吗?
可以通过确保不同版本始终位于使用它们的包的composer.json 的
require-dev
部分来解决包树中的冲突。那么下游包将不会尝试加载它们。
在这种情况下这是有道理的,因为每个包的测试范围应该限于包本身。