为啥更新包时“composer.json”没有更新?

Posted

技术标签:

【中文标题】为啥更新包时“composer.json”没有更新?【英文标题】:Why "composer.json" is not updated when updating packages?为什么更新包时“composer.json”没有更新? 【发布时间】:2020-04-12 23:15:21 【问题描述】:

npm 等其他包管理器相比,我发现composer 在更新与给定项目相关的包时有一种奇怪的行为。

也根据文档,updateupgrade 选项

根据composer.json升级你的依赖到最新版本,并更新composer.lock文件。

确实,composer.lock 已正确更新为新的软件包版本号。但是composer.json 并没有被修改,而是列出了带有旧版本号的包。

为什么会这样?我做错了什么,或者这确实是应该如何工作的?如果是这种情况,那么让两个文件中的一个保持最新而另一个不是最新的原因是什么?

【问题讨论】:

仅供参考,npm 使用 package-lock.json @kerbholz 是的,我知道,但是更新软件包时package.json 也会更新。 您是否希望在运行composer update 时将composer.json 中指定的版本更新到最新版本?如果我指定了我想要一个包的版本2.1.1,我不希望在版本2.1.2 到来时更改它,如果我这样做了,我会写2.1.* 或只是* 我的composer.json"package": "^4.2",它是由composer require 自动添加的,如果我运行composer update,则包从版本4.2.0 更新到4.3.0composer.lock 更新到这个新版本,但composer.json 仍然列出4.2。我的问题是关于这种差异。 也许***.com/questions/16739998/… 会回答你的问题 【参考方案1】:

这是正常行为。

Composer 更新会根据您的 composer.json 文件查找更新,因此这里会查找 4.2 及更高版本 (^4.2) 如果您希望您的 composer.json 需要 4.3 及更高版本 (^4.3),您可以手动修改它或再次调用 composer require。

【讨论】:

以上是关于为啥更新包时“composer.json”没有更新?的主要内容,如果未能解决你的问题,请参考以下文章

composer.json和composer.lock

为啥 Composer 中的依赖项更新如此缓慢?

保持 composer.json 更新和维护

如何更新 Laravel composer.json

安装包时出错(安装失败,将 ./composer.json 还原为其原始内容。)(Laravel 管理包 - Voyager)[重复]

如果我不想更新作曲家怎么办,我只想使用 composer.json 和 composer.lock 中的内容