npm 的语义化版本控制(semver)是如何工作的?
1. 版本号结构
- 语义化版本遵循 主版本号.次版本号.补丁号(MAJOR.MINOR.PATCH)三段式结构
- 主版本号:不兼容的 API 变更
- 次版本号:向下兼容的功能新增
- 补丁号:向下兼容的问题修复
2. 范围符号与兼容性
- ^1.2.3 允许 >=1.2.3 1.3.0,~1.2.3 允许 >=1.2.3 1.2.10
- 开发依赖通常使用 ^ 以获取补丁与次版本更新,生产依赖则根据稳定性需求选择更严格的范围
3. 版本解析与更新
- npm 在版本范围内自动选择最新的兼容版本
- npm update 命令根据 package.json 中的范围重新解析并更新依赖
- 主版本升级需要手动修改 package.json,因为可能包含破坏性变更