智能客服
你问我答,随时在线为你解决问题
ohpm管理的三方包的版本号遵循语义化版本控制(SemVer 2.0.0)规则。
- 版本号格式:主版本号.次版本号.修订号[-先行版本号][+构建信息], 正例:1.0.0-PRERELEASE+BUILD
版本比较时优先比较标准版本号部分(即:主版本号.次版本号.修订号),优先级为:主版本号 > 次版本号 > 修订号。比较方式如下:
标准版本与先行版本比较方式如下:
- // 示例1
- > 依赖`liba`在仓库存在的版本有:['1.0.0-snapshot.1', '1.0.0-snapshot.2', '1.0.0', '2.0.0-snapshot.1', '2.0.0-snapshot.2', '2.0.0', '3.0.0-snapshot.1', '3.0.0-snapshot.2']
- > entry模块依赖`liba`,entry的oh-package.json5配置:{
- "name": "entry",
- "version": "1.0.0",
- "description": "Please describe the basic information.",
- "main": "Index.ets",
- "license": "Apache-2.0",
- "dependencies": {
- "liba": ">=1.0.0"
- }
- }
- > ohpm install后安装的`liba`版本为:`2.0.0`
-
- // 示例2
- > 依赖`liba`在仓库存在的版本有:['1.0.0-snapshot.1', '1.0.0-snapshot.2', '2.0.0-snapshot.1', '2.0.0-snapshot.2']
- > entry模块依赖`liba`,entry的oh-package.json5配置:{
- "name": "entry",
- "version": "1.0.0",
- "description": "Please describe the basic information.",
- "main": "Index.ets",
- "license": "Apache-2.0",
- "dependencies": {
- "liba": ">=1.0.0"
- }
- }
- > ohpm install后安装的`liba`版本为:`2.0.0-snapshot.2`
-
- // 示例3
- > 依赖`liba`在仓库存在的版本有:['1.0.0', '1.0.2-snapshot', '2.0.0-snapshot.1', '2.0.0-snapshot.2']
- > entry模块依赖`liba`,entry的oh-package.json5配置:{
- "name": "entry",
- "version": "1.0.0",
- "description": "Please describe the basic information.",
- "main": "Index.ets",
- "license": "Apache-2.0",
- "dependencies": {
- "liba": "^1.0.0"
- }
- }
- > 工程级配置依赖`liba`,工程级的
- oh-package.json5配置:{
- "modelVersion": "x.0.0",
- "description": "Please describe the basic information.",
- "dependencies": {
- "liba": "1.0.2-snapshot"
- }
- }
- > ohpm install后安装的`liba`版本为:`1.0.2-snapshot`
-
- // 示例4
- > 依赖`liba`在仓库存在的版本有:['1.0.0-snapshot', '1.0.0']
- > entry模块依赖`liba`,entry的oh-package.json5配置:{
- "name": "entry",
- "version": "1.0.0",
- "description": "Please describe the basic information.",
- "main": "Index.ets",
- "license": "Apache-2.0",
- "dependencies": {
- "liba": ">=1.0.0-snapshot"
- }
- }
- > ohpm install后安装的`liba`版本为:`1.0.0`
-
- // 示例5
- > 依赖`liba`在仓库存在的版本有:['0.0.1','1.0.0-snapshot', '1.0.1-snapshot']
- > entry模块依赖`liba`,entry的oh-package.json5配置:{
- "name": "entry",
- "version": "1.0.0",
- "description": "Please describe the basic information.",
- "main": "Index.ets",
- "license": "Apache-2.0",
- "dependencies": {
- "liba": ">=1.0.0-snapshot"
- }
- }
- > ohpm install后安装的`liba`版本为:`1.0.1-snapshot`
-
- // 示例6
- > 依赖`liba`在仓库存在的版本有:['1.0.0-snapshot.1', '1.0.0-snapshot.2', '2.0.0-snapshot.1', '2.0.0-snapshot.2']
- > entry模块依赖`liba`,entry的oh-package.json5配置:{
- "name": "entry",
- "version": "1.0.0",
- "description": "Please describe the basic information.",
- "main": "Index.ets",
- "license": "Apache-2.0",
- "dependencies": {
- "liba": ">=1.0.0-snapshot"
- }
- }
- > ohpm install后安装的`liba`版本为:`2.0.0-snapshot.2`
举例:2.0.0-beta.2与2.0.0-beta.11比较,标准版本:"2.0.0" 部分一致,大小由先行版本号部分:beta.2和beta.11决定;按 "." 分割后,第一段标识符"beta"一致,进而比较数字部分:2 < 11,故:2.0.0-beta.2 < 2.0.0-beta.11。
举例:4.0.0-beta.2与4.0.0-rc.1比较,标准版本:"4.0.0" 一致,比较 "beta.2" 与 "rc.1" 部分,因首个字符字典序:b < r,故:4.0.0-beta.2 < 4.0.0-rc.1。
举例:1.0.0-1 < 1.0.0-a。
举例:3.0.0-alpha < 3.0.0-alpha.1。
举例:2.1.0-100-1002与2.1.0-1001-001比较,标准版本部分 "2.1.0" 一致,比较 "100-1002" 与 "1001-001" 部分,从左到右逐字符(按ASCII字典序)比较,在第四位字符时:"-" < "1",故:2.1.0-100-1002 < 2.1.0-1001-001。
使用^(插入符)会将要安装或升级的版本的主版本号固定,最高允许升级到主版本下的最新版本。当主版本号为0时,将固定从左往右的第一位非零版本;适用场景:希望自动获取当前主版本下的最新版本。
- // ^使用示例
- ^1.2.301 等价于:1.2.301 <= 版本 < 2.0.0。 // 固定主版本号:1不变
- ^0.2.301 等价于:0.2.301 <= 版本 < 0.3.0。 // 固定从左往右的第一位非零版本,即次版本号:2不变
- ^0.0.301 等价于:0.0.301 <= 版本 < 0.0.302。// 固定从左往右的第一位非零版本,即修订号:301不变
从OHPM v5.0.11即DevEco Studio 5.0.7.210开始,^(插入符)的含义始终为固定主版本,不再固定从左往右的第一位非零版本。
- // ^语义统一后示例
- ^1.2.301 等价于:1.2.301 <= 版本 < 2.0.0 // 固定主版本号:1不变
- ^0.2.301 等价于:0.2.301 <= 版本 < 1.0.0 // 固定主版本号:0不变
- ^0.0.301 等价于:0.0.301 <= 版本 < 1.0.0 // 固定主版本号:0不变
使用~(波浪符)会将要安装或升级的版本的主版本号、次版本号固定,最高允许升级到主版本号.次版本号下的最新版本;适用场景:希望只接受修订号更新,不自动升级主版本号和次版本号。
- // ~使用示例
- ~1.2.301 等价于:1.2.301 <= 版本 < 1.3.0 // 固定主版本号.次版本号:1.2不变
- ~1.2 等价于: ~1.2.0` 等价于:1.2.0 <= 版本 < 1.3.0 // 固定主版本号.次版本号:1.2不变
- ~1 等价于: ~1.x` 等价于:1.0.0 <= 版本 < 2.0.0-0 // 固定主版本号:1不变(特殊)
- ~0.10.100 等价于:0.10.100 <= 版本 < 0.11.0 // 固定主版本号.次版本号:0.10不变
- ~0.0 等价于:0.0.0 <= 版本 < 0.1.0 // 固定主版本号.次版本号:0.0不变
- ~0 等价于:0.x 等价于:0.0.0 <= 版本 < 1.0.0-0 // 固定主版本号:0不变(特殊)
用于明确声明一个连续的版本区间,包含起始和结束版本(前后需要有空格);"-"在跨工具链支持上更全面,应优先选用;适用场景:希望定义闭区间并简化表达式。
- // 使用示例
- 1.0.1 - 2.1.1 等价于:1.0.1 <= 版本 <= 2.1.1
- 1.0.1 ... 2.1.1 等价于:1.0.1 <= 版本 <= 2.1.1
- // 左侧版本存在版本缺省时示例
- 1.1 - 2.1.0 等价于 1.1.0 <= 版本 <= 2.1.0
- // 右侧版本存在版本缺省时示例
- 1.1.0 - 2.1 等价于 1.1.0 <= 版本 < 2.2.0-0
- 1.1.0 - 2 等价于 1.1.0 <= 版本 < 3.0.0-0
按字面意义匹配版本范围,正例:">1.2.0" 表示版本需高于1.2.0及以下版本。
匹配任意值,通常用于省略字段, 简化范围定义。
- // 通配符使用示例
- 1.x 等价于:1.0.0 <= 版本 < 2.0.0 等价于:^1.0.0
- 1.1.x 等价于:1.1.0 <= 版本 < 1.2.0 等价于:~1.1.0
多个范围条件使用空格分割时,默认以逻辑与(&&)连接,需同时满足所有条件。
- // 空格使用示例
- >=1.0.101 <2.0.100 等价于:1.0.101 <= 版本 < 2.0.100
组合多个范围版本,满足任意一个即可。
- // 逻辑或使用示例
- ^1.0.101 || ^2.0.100 等价于:1.0.101 <= 版本 < 2.0.0 或 2.0.100 <= 版本 < 3.0.0
智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功