版本号
一、版本号的秘密语言:三段式密码
所有现代版本号都遵循
主版本.次版本.修订号 结构(如3.12.4),每个数字都是开发者间的密语:
例如:
Vue 2.x → 3.x→ 彻底重构(主版本升级)
二、特殊符号解析:自动化依赖管理方式
1. 插入符 ^:允许安全升级
"dependencies": {
"lodash": "^4.17.21" // 允许 4.17.21 ≤ 版本 < 5.0.0
}允许安装:
4.18.0,4.99.99拒绝安装:
5.0.0(主版本变更,可能破坏兼容性)
2. 波浪线 ~:锁定微小变更
"react": "~18.2.0" // 仅允许 18.2.0 ≤ 版本 < 18.3.0允许安装:
18.2.1,18.2.9拒绝安装:
18.3.0(次版本升级可能引入新特性)
3. 严格匹配:只认一个精确版本
"vue": "3.4.27" // 只认这个精确版本三、 0.x 版本
主版本为 0 的版本(如 0.12.1)是特殊雷区:
"peerDependencies": {
"@alpha-library": "^0.1.0"
// 实际允许范围:0.1.0 ≤ 版本 < 0.2.0
}允许:
0.1.1,0.1.9禁止:
0.2.0(次版本变更即视为破坏性更新)
因为
0.x表示项目还在不稳定期,每次更新都可能翻天覆地!
四、版本管理的生存法则
1. 生产环境黄金三原则
{
"dependencies": {
// 业务库用 ^ 获取安全更新
"axios": "^1.6.0",
// 底层工具库用 ~ 防止意外
"webpack": "~5.90.0"
},
"devDependencies": {
// 测试工具允许激进更新
"jest": "^29.0.0"
}
}2. 锁文件:团队的版本合约
package-lock.json或yarn.lock是项目的依赖快照务必提交到 Git!确保所有成员安装完全相同的依赖树
五、“契约”开发者间的信任协议
主版本升级 = "我要推翻之前的架构"
次版本升级 = "我新增了功能但不影响你"
修订号升级 = "我悄悄修了bug,无需通知你"
作为库作者:破坏性变更必须升主版本号
作为使用者:
^用于业务库,~用于核心库"好的开发者写代码,卓越的开发者定契约"
—— 你,正在成为后者。