如何在 Composer 中强制依赖库的版本

How to force version of dependence library in Composer

我有一个 composer.json,其中包含库 nette/nette,它依赖于其他库 nette/deprecated 并且这个嵌套库在新版本中有一个错误。所以我需要强制 Composer 加载以前版本的嵌套库 nette/deprecated。问题是主库 nette/nette 需要版本 "nette/nette": "~2.4.0" 但所有 2.4 和 2.5 版本都取决于有问题的 nette/deprecated 图书馆。如何强制 Composer 加载完全需要的嵌套 nette/deprecated 库版本?看来这是不可能的,或者我对 Composer 功能的了解不够。 谢谢。

如果您知道某个依赖项存在错误或干扰了您代码中的某些内容,您可以在 composer.json.

中将其标记为冲突
{
    "...",
    "require": {
        "..."
    },
    "conflict": {
        "nette/deprecated": ">2.4.0,<3.0.0"
    }
}

这将排除 2.4.0 之后且小于 3.0.0 的所有内容,但您可以将值更改为您需要的任何值。通过这种方式,您可以清楚地传达某些版本是不受限制的,而无需明确将其声明为根依赖项。

另请参阅:https://getcomposer.org/doc/04-schema.md#conflict