为啥更新包时“composer.json”没有更新?
Posted
技术标签:
【中文标题】为啥更新包时“composer.json”没有更新?【英文标题】:Why "composer.json" is not updated when updating packages?为什么更新包时“composer.json”没有更新? 【发布时间】:2020-04-12 23:15:21 【问题描述】:与npm
等其他包管理器相比,我发现composer
在更新与给定项目相关的包时有一种奇怪的行为。
也根据文档,update
和 upgrade
选项
根据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.0
和composer.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 还原为其原始内容。)(Laravel 管理包 - Voyager)[重复]