Composer 中依赖包的版本约束和稳定性
版本约束
通过 Composer 来安装依赖包,关于依赖包的版本约束,可以使用多种不同的方式。
版本格式
版本格式:主版本号.次版本号.修订版本号,版本号递增规则如下:
- 主版本号:当你做了不兼容的 API 修改。
- 次版本号:当你做了向下兼容的功能性新增。
- 修订版本号:当你做了向下兼容的问题修正。
先行版本号及版本编译元数据可以放到“主版本号.次版本号.修订版本号”的后面,作为延伸。
确切的版本号
你可以指定包的确切版本。如 monolog/monolog 1.0.2 。
范围
通过使用比较操作符可以指定有效的版本范围。
有效的运算符有 >、>=、<、<=、!=、~、^ 等。
你可以定义多个范围:
- 中间用逗号隔开,视为逻辑 AND 。
- 中间用管道符号 | 隔开,视为逻辑 OR 。
AND 的优先级高于 OR。
>=1.0
>=1.0,<2.0
>=1.0,<1.1|>=1.2
通配符
你可以使用通配符 * 来指定一种模式。
1.0.* 与 >=1.0,<1.1 是等效的。
波浪号运算符
~ 表示版本号只能改变最末尾那段(如果是 ~x.y 末尾就是 y,如果是 ~x.y.z 末尾就是 z)。
波浪号运算符 ~ ,对于遵循语义化版本号的项目非常有用。
~1.2 相当于 >=1.2,<2.0
~1.2.3 相当于 >=1.2.3,<1.3
常见的用法是标记你所依赖的最低版本,像 ~1.2 (允许 1.2 以上的任何版本,但不包括下一个重要版本 2.0)。
注意: 虽然 2.0-beta.1 严格地说是早于 2.0,但是,根据版本约束条件, 例如 ~1.2 却不会安装这个版本。就像前面所讲的 ~1.2 只意味着 .2 部分可以改变,但是 1. 部分是固定的。
^运算符
^ 表示除了主版本号以外,次版本号和修订版本号都可以变。
^ 和 ~ 的意思很接近,在x.y的情况下是一样的,都是代表 x.y <= 版本号 < (x+1).0。但是,在版本号是x.y.z的情况下就有区别,举个例子吧:
~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0
^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0
稳定性
默认情况下只有稳定的发行版才会被考虑在内。
如果你也想获得 RC、beta、alpha 或 dev 版本,你可以使用稳定标志。
{"require": {"monolog/monolog": "1.0.*@beta","acme/foo": "@dev"}
}
你可以对所有的包做 最小稳定性 设置,而不用每个依赖逐一设置。
minimum-stability (root-only)
minimum-stability 定义了包的最小稳定性。默认为 stable(稳定)。
如果你依赖于一个 dev(开发版本)包,你应该明确的进行定义。
minimum-stability 会对每个包的所有版本都会进行稳定性检查,低于 minimum-stability 所设定的最低稳定性的版本,将在解决依赖关系时被忽略。对于个别包的特殊稳定性要求,可以在 require 或 require-dev 中设定。
可用的稳定性标识(按字母排序)有:dev、alpha、beta、RC、stable。
prefer-stable (root-only)
当此选项被激活时,Composer 将优先使用更稳定的包版本。
使用 "prefer-stable": true 来激活它。
Composer 中依赖包的版本约束和稳定性相关推荐
- CodeIgniter中运用composer安装依赖包
2019独角兽企业重金招聘Python工程师标准>>> 基本信息 CodeIgniter 版本:3.1.8 Nginx: Tengine/2.1.2 (nginx/1.6.2) My ...
- composer安装依赖包
安装依赖包 要开始在你的项目中使用 Composer,你只需要一个 composer.json 文件.该文件包含了项目的依赖和其它的一些元数据. 获取定义的依赖到你的本地项目,只需要调用 compos ...
- idea中Maven中依赖包下载不了的问题的解决办法
今天安装依赖包浪费了很多的时间,看了很多的博客才得到了解决,接下来总结一些. 1.首先将Settings -> Build,Execution,Deployment -> Build To ...
- Java各中依赖包介绍
单元测试依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactI ...
- 使用composer下载依赖包下载失败的解决方法
From: https://blog.csdn.net/dlnumk/article/details/79200507 下载好的composer默认的下载地址是国外的,在下载的过程中网络不好或者可能被 ...
- go依赖包出现版本不兼容的问题
大概是说原因是 google.golang.org/grpc 1.26 后的版本是不支持 clientv3 的. 也就是说要把这个改成 1.26 版本的就可以了. 在 go.mod 里加上: repl ...
- maven中pom.xml中依赖包代码的查询地址
http://mvnrepository.com/ 转载于:https://www.cnblogs.com/wangcp-2014/p/5456672.html
- Python中pip,pip3,虚拟环境(venv)三者的关系,如何在pycharm中使用虚拟环境,以及安装依赖包所遇到的问题。
目录 一.是什么是pip,pip3,与虚拟环境(venv) 二.三者之间的联系 三.在pycharm中设置虚拟环境 四.安装python依赖包的快捷方式 五.注意事项 六.感谢观看!!!点个赞或者关注 ...
- Go Modules依赖包管理与Go Modules实战
目录 Go Modules依赖包管理 Go Modules 简介 Go 包管理的历史 Go1.5 版本前:GOPATH Go1.5 版本:Vendoring "百花齐放":多种 G ...
最新文章
- Django:永别了pycrypto库~
- Error creating bean with name 'multipleEntityManagerFactory' defined in class
- 杭州电子科技大学-杭电信标一队
- hi3559a100解码
- jquery : 动态构建表单自动提交请求
- HDU 4121 Xiangqi 模拟题
- SVN中Revert changes from this revision 跟Revert to this revision
- c语言 拓补排序源代码,拓扑排序C语言代码
- MySQL Cookbook 学习笔记-02
- Python 到底是怎么火起来的??网友:真的值!
- Python 爬取 201865 条《隐秘的角落》弹幕,发现看剧不如爬山?
- java版电子商务spring cloud分布式微服务b2b2c社交电商(一)服务的注册与发现(Eureka)...
- Template-Based 3D Model Fitting Using Dual-Domain Relaxation
- 今天我才明白了泛型,泛型类 泛型方法
- Linux连接锐捷校园网客户端
- android 原型图片,墨刀如何创建Android原型图?
- 软件工程实训有必要吗_软件工程专业有没有必要考研?
- 一本正经的聊一聊面试官的心理
- Java:获取两个区间内 为周几或星期符合 的所有日期,指定日期 使用周数计算出相对应的工作日
- 使用CSS实现图片叠加效果