Composer 不会更新过时的依赖项
Posted
技术标签:
【中文标题】Composer 不会更新过时的依赖项【英文标题】:Composer doesn't update outdated dependencies 【发布时间】:2017-11-10 05:40:14 【问题描述】:好吧,在运行命令composer outdated
之后,我可以看到有更新版本的 phpdocumentor/type-resolver 可用。安装的版本是 0.2.1,最新的是 0.3.0。需要说它是由我使用的组件间接安装的,而不是我自己安装的。
问题是当我运行composer update
或composer update phpdocumentor/type-resolver
时,它显示“无需安装或更新”。为什么以及如何解决?
【问题讨论】:
【参考方案1】:可能某些依赖项已经修复了您要安装的软件包版本。尝试使用命令的输出来检查您列出的软件包的使用者和版本:
composer why-not phpdocumentor/type-resolver 0.3.0
注意:在current version of the documentation of composer 中,该命令被命名为prohibits
,所以如果这不起作用,请尝试:
composer prohibits phpdocumentor/type-resolver 0.3.0
希望有帮助
【讨论】:
感谢您的提示。我有 composer 1.4.2 所以第一个命令没问题。输出为:phpdocumentor/reflection-docblock 3.1.1 requires phpdocumentor/type-resolver (^0.2.0)
。这是你说的问题吗? (对不起,我不久前开始使用composer)。
运行composer*update phpdocumentor/type-resolver ^0.3.0
什么也没有。 Composer 说“未安装列出的更新包 0.3.0。忽略。”仍然需要一种方法将其更新到最新版本。有人吗?..【参考方案2】:
您的 composer.json 文件中可能存在阻止升级的版本限制。这是为了防止添加破坏性更改。在您的示例中,版本是预发布版本 (0.*),因此版本控制约束甚至会作用于矿工版本。
如果您确信没有重大更改或您已准备好处理它们,请编辑您的 composer.json 文件。更改如下:
"phpdocumentor/type-resolver": "0.2.1",
到
"phpdocumentor/type-resolver": "^0.3",
再次尝试composer upgrade
并进行测试以确保一切正常。
【讨论】:
以上是关于Composer 不会更新过时的依赖项的主要内容,如果未能解决你的问题,请参考以下文章
Composer:如何在不更新旧依赖项的情况下安装另一个依赖项?