代码与技术常识04 / 10
语义化版本 SemVer
主版本.次版本.修订号:改坏了升第一位,加功能升第二位,修 bug 升第三位。
- 学会用时10 分钟
- 你的收获升级依赖前就知道风险
- 用到的频率每周 2 次
- 难度入门
该复习了做一下本页的 10 秒自测,答对就能把下次复习推后。去自测
01为什么学
没学之前
升级了一个依赖,项目突然跑不起来,不知道是哪个。
学会之后
看版本号就知道这次升级大不大、有没有可能不兼容。
- 发布自己的扩展、插件时按规则写版本
- 看懂 package.json 里的 ^ 和 ~
02图解
公式图
主版本1.次版本2.修订号3=1.2.3
03基本单元5 个
- 主版本 MAJOR不兼容的改动
- 次版本 MINOR向后兼容的新功能
- 修订号 PATCH向后兼容的修 bug
- ^允许升次版本和修订号
- ~只允许升修订号
04怎么用
- 不兼容的改动升主版本,新增功能升次版本,修 bug 升修订号
- ^1.2.3 允许升到任何 1.x.x(不超过 2.0.0)
- ~1.2.3 只允许升到 1.2.x
- 主版本 0(0.x.y)表示不稳定,次版本变化也可能不兼容
05速查表
| 写法 | 含义 | 例子 |
|---|---|---|
| 1.2.3 | 精确版本 | 只用 1.2.3 |
| ^1.2.3 | 同一主版本内最新 | 1.2.3 ≤ v < 2.0.0 |
| ~1.2.3 | 同一次版本内最新 | 1.2.3 ≤ v < 1.3.0 |
| 2.0.0-beta.1 | 预发布版本 | 还不稳定 |
06动手试试
版本升级模拟
07套用一次
浏览器扩展新增一个设置页(兼容):1.4.2 → 1.5.0;修复一个崩溃:1.5.0 → 1.5.1;改了配置格式:1.5.1 → 2.0.0。
08常见的坑
随便升版本号
按规则升,使用者才能通过数字判断风险。
锁定太死
用 ^ 能自动拿到安全修复,同时避开不兼容升级。
09自测与练习
先做 10 秒自测,再动手练一下。
修复了一个 bug,版本从 1.4.2 变成?
10 分钟小练习
看你项目的 package.json,找出三个依赖,用演示器判断它们的 ^ 范围。
看参考答案
注意主版本升级时要读更新说明。