compoesr
的require
/update
都可以更新指定的依赖包(升级/降级)。
require
更为灵活些,未安装则进行安装,已安装则根据传入的版本号进行升级
或降级
。update
则无法在命令行传入新的版本号
,需要先手动在composer.json
中指定新的版本号
,然后执行更新命令。
composer require google/protobuf --ignore-platform-reqs -vvv
require 命令
示例
// 安装包
composer require hashids/hashids:2.0.0
// 已安装 升级
composer require hashids/hashids:3.0.0
// 已安装 降级
composer require hashids/hashids:2.0.4
update 命令
update
命令无法在命令行中指定包版本号
,需要手动修改composer.json
文件
// 安装包
composer require hashids/hashids:2.0.0
错误用法
composer update hashids/hashids:3.0.0
正确用法示例
vim composer.json
"require": {
"hashids/hashids": "3.0.0"
},
:wq
#升级到3.0.0
composer update hashids/hashids
vim composer.json
"require": {
"hashids/hashids": "2.0.4"
},
:wq
#降级到2.0.4
composer update hashids/hashids
同时,如果我们编辑更新了多个包的版本号,则无法使用 composer update package1
composer update package2
composer update package3
的方式去依次的更新,因为composer
会校验配置文件的完整性json vs lock
,你指定要我更新A
,但你B
的version
在json
和lock
中不一致,你却不要我更新它,这是有问题的。
这时只能使用composer update
全局更新依赖,注意是全局包的更新操作,一些你未更改但使用了版本号范围的包也有可能被更新升级,请慎用!
install 命令
install
用于项目初始化后,初次安装依赖时,且会优先读取composer.lock
中的版本号,以尽可能的保证协作开发中包版本的一致性,如果不存在composer.lock
时才会读取composer.json
中的版本约束进行安装。
所以协作开发中,我们建议要同时将composer.lock/composer.json
上传至远端仓库。
版本号范围
大于/大于等于:>1.2.3 >=1.2.3
小于/小于等于:<1.2.3 <=1.2.3
确切的版本号:1.2.3
~1.2.3: 1.2.3 <= version < 1.3
^1.2.3: 1.2.3 <= version < 2.0
{
"php": ">=7.0",
"ext-swoole": ">=4.0.0",
"lib-curl": ">=7.29.0"
}