PHP composer更新指定依赖包过程详细讲解

作者:胡西风_foxww 时间:2023-05-27 18:05:34 

composer更新依赖包

compoesrrequire/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

正确用法示例

#升级到3.0.0

vim composer.json
"require": {
"hashids/hashids":"3.0.0"
},
:wq
composer update hashids/hashids

#降级到2.0.4

vim composer.json
"require": {
"hashids/hashids":"2.0.4"
},
:wq
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 require packageName:versionNo,不存有的相当于执行composer update packageName with versionRule in composer.json

当我们协同开发时,A 在本地安装了新的依赖包,或者更新了依赖包,会写入 composer.lock/composer.json,A 上传至仓库,B 拉取至本地后,应执行一次 composer install 来同步团队的版本变更。

所以协作开发中,我们建议要同时将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"
}

来源:https://blog.csdn.net/my_study_everyday/article/details/129759760

标签:PHP,composer,依赖包
0
投稿

猜你喜欢

  • 已安装tensorflow-gpu,但keras无法使用GPU加速的解决

    2021-08-15 12:17:42
  • 中秋阴天看不见月亮只好用python写赏月工具

    2021-02-09 17:54:24
  • 利用Python编写一个闹钟,治好你的拖延症

    2021-11-15 12:06:48
  • Vue插槽原理与用法详解

    2024-05-09 10:43:09
  • 如何在Flask中实现数据分组流程详解

    2021-11-15 06:53:59
  • Go语言实现JSON解析的神器详解

    2024-05-28 15:23:17
  • javascript验证IP地址等验证例子

    2007-09-11 13:40:00
  • 如何解决在Azure上部署Sqlserver网络访问不了

    2024-01-14 07:47:38
  • Python GDAL库在Anaconda环境中的配置方法

    2021-09-13 18:51:22
  • sql server 复制表从一个数据库到另一个数据库

    2024-01-18 23:51:55
  • Python报错:ModuleNotFoundError的解决办法

    2023-02-19 10:53:09
  • MYSQL5 下的兼容说明(my.ini my.conf)

    2008-02-23 10:13:00
  • Go位集合相关操作bitset库安装使用

    2024-05-09 14:57:22
  • 浅析PHP中的字符串编码转换(自动识别原编码)

    2023-09-08 08:04:44
  • asp如何将产生的密码记录并发送给用户?

    2009-11-26 20:50:00
  • python中的插入排序的简单用法

    2023-09-30 07:57:51
  • 基于element-ui中el-select下拉框选项过多的优化方案

    2023-07-02 17:00:50
  • MySQL时间格式化date_format使用语法

    2024-01-23 07:31:36
  • python 使用 with open() as 读写文件的操作方法

    2021-05-08 08:32:20
  • 微信小程序indexOf的替换方法(推荐)

    2024-04-16 09:51:11
  • asp之家 网络编程 m.aspxhome.com