【问题标题】:How to force version of dependence library in Composer如何在 Composer 中强制依赖库的版本
【发布时间】:2019-12-01 12:32:16
【问题描述】:

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

【问题讨论】:

  • 您是否尝试过composer remove nette/nette,然后又尝试了composer require nette/nette ~2.4.0
  • 问题不在 nette/nette 版本 ~2.4.0 中。问题出在 nette/deprecated 版本中。
  • 看来我找到了解决办法。如果在顶级 composer.json 中显式设置了 nette/deprecated,则 Composer 会加载此版本的库。

标签: php composer-php version libraries


【解决方案1】:

如果您知道某个依赖项存在错误或干扰代码中的某些内容,您可以在 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

【讨论】:

    猜你喜欢
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 2022-01-03
    • 2018-02-03
    • 2020-09-26
    • 2017-04-14
    相关资源
    最近更新 更多