dtf579777
2019-07-23 12:47
浏览 554
已采纳

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

I have a composer.json which contains library nette/nette which has dependence to other library nette/deprecated and this nested library has a bug in newer version. So I need to force Composer to load previous version of nested library nette/deprecated. The problem is that the main library nette/nette need s to be of version "nette/nette": "~2.4.0" but all the 2.4 and also 2.5 versions depends on the buggy nette/deprecated library. How to force Composer to load exactly required version of nested nette/deprecated library? It seems it is not possible or I am not enough educated in Composer features. Thanks.

图片转代码服务由CSDN问答提供 功能建议

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

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongxi1320 2019-07-24 08:36
    已采纳

    If you know that a dependency has a bug or interferes with something in your code you can mark it as conflicting in your composer.json.

    {
        "...",
        "require": {
            "..."
        },
        "conflict": {
            "nette/deprecated": ">2.4.0,<3.0.0"
        }
    }
    

    This will exclude everything after 2.4.0 and smaller than 3.0.0, but you can change the value to whatever you need it to be. This way you can communicate clearly, that there are certain versions that are off limits without explicitly declaring this as a root dependency.

    See also: https://getcomposer.org/doc/04-schema.md#conflict

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题