场景引入
开发时,经常需要依赖一些模块(包),我们进行了下载之后,便一直在该版本的模块环境下进行开发,但是线上的服务器(其他开发者)一般都是根据依赖来配置文件,重新下载各个模块,但是保不齐某个模块的版本已经更新了,这时线上的包会更新到最新的版本,但你的代码还是依据老版本来写的,这时可能会产生一些不知名的 Bug。
为了保持 JavaScript 生态系统的健康,可靠和安全,npm 软件包进行重大更新时,建议在 package.json 文件中发布带有更新版本号的软件包的新版本,文件遵循语义版本规范。
遵循语义版本规范可以帮助依赖代码的其他开发人员了解给定版本中的更改范围,并在必要时调整自己的代码。
关于语义版本控制
为了帮助依赖你的代码的开发人员,建议在 1.0.0 开始包版本并按如下方式递增。npm 包的版本号的格式 x.y.z ,版本好的格式遵循 semver 2.0 规范。
| 代码状态 | 阶段 | 规则 | 示例版本 |
|---|---|---|---|
| 首发 | 新产品 New product | 从1.0.0开始 | 1.0.0 |
| 向后兼容的错误修复 | 补丁发布 Patch release | 第三位数增加 | 1.0.1 |
| 向后兼容的新功能 | 次要发布 Minor release | 中间数字增加 并将最后一个数字重置为零 | 1.1.0 |
| 破坏向后兼容性的更改 | 主要发布 Major release | 第一个数字增加 并将中间和最后一个数字重置为零 | 2.0.0 |
版本规范识别
脱字符 ^
npm 通过脱字符(^)来限定所安装模块的主版本号,而该脱字符对于不同的版本号有不同的更新机制。
^1.2.1 更新版本范围为 >=1.2.1 && < 2.0.0 ;
^0.2.1 更新版本范围为 >=0.2.1 && < 0.3.0 ;
^0.0.1 更新版本范围为 0.0.2 (相当于锁定为了 0.0.2 版本);
波浪号 ~
限定模块的次要版本。
~1.2.1 更新版本范围为 >=1.2.1 && < 1.3.0 ;
~0.2.1 更新版本范围为 0.3.0 (相当于锁定为了 0.3.0 版本);









