语义化版本 (SemVer)

2025年07月29日 Tags: Js


版本格式:

Major.Minor.Patch(主版本号.次版本号.修订号)

版本号递增规则:

1.主版本号递增时,次版本号和修订号必须归零。次版本号递增时,修订号必须归零。

2.次版本号在任何公共 API 的功能被标记为弃用时也须递增。也可以在内部程序有大量新功能或改进被加入时递增,其中可以包括修订级别的改变。

❓“向下兼容”和“不向下兼容”指的是什么?

向下兼容 (Backward Compatible)

新版本的 API 在功能上不会破坏旧版本的行为,旧代码在新版本中仍然可以正常运行。

例如:

不向下兼容(Breaking Change/Not Backward Compatible)

新版本的 API 会破坏旧版本的行文,可能导致旧代码无法正常运行。

例如:

先行版本号(Pre-release Version)

表示某个版本时尚未正式发布的预发布版本。通常用于测试、内部使用或早期体验。

格式:Major.Minor.Patch-Pre.Release

先行版本号可以被标注在修订号之后,格式为先加上一个连接号- 再加上一连串以句点 . 分隔的标识符来修饰。标识符必须由 ASCII 字母数字和连接号 [0-9A-Za-z-] 组成,且禁止留白。

示例:

先行版本标识符:

标识符 说明
alpha 早期测试版本,功能尚未完整
beta 功能基本完成,仍在测试阶段
rc 候选发布版本
dev 开发版本(仅供开发测试)
nightly 夜间构建版本
preview 预览版本
experimental 实验性版本

版本编译信息(Build Info/Build Metadata)

附加在版本号之后,用于描述构建过程相关信息的元数据。

格式:Major.Minor.Patch[-Pre.Release]+Build.Info

先加上一个加号 + 再加上一连串以句点 . 分隔的标识符来修饰。标识符必须由 ASCII 字母数字和连接号 [0-9A-Za-z-] 组成,且禁止留白。

示例:

常见的版本编译信息内容:

⚠️注意事项

  1. 禁止在数字前方补零,每个元素必须以数值来递增。
  2. 带有先行版本号的版本低于没有先行版本号的版本。
  3. 判断版本的优先级时,编译信息可被忽略。

版本范围指示符

指示符 说明 用途
^ 允许次版本号和修订号升级,但不改变主版本号 建议开发环境使用
~ 允许修订号升级,但不改变次版本号和主版本号 建议生产环境使用
> 大于指定版本
< 小于指定版本
= 精确匹配,可省略,锁版本号 建议生产环境使用
* 接受任何版本
x 通配符 示例:1.x 1.2.x x.x.x (同 *)

相关命令

npm outdated 检查是否有可用更新

npm audit 检查依赖的安全漏洞


参考链接

语义化版本 2.0.0

← 上一篇: 导入并导出目录下模块文件的方法&使用桶文件的后果

下一篇: → Cookie,sessionStorage,localStorage,IndexedDB 介绍