npm 语义版本控制详解

2020-06-17 06:51:35易采站长站整理

场景引入

开发时,经常需要依赖一些模块(包),我们进行了下载之后,便一直在该版本的模块环境下进行开发,但是线上的服务器(其他开发者)一般都是根据依赖来配置文件,重新下载各个模块,但是保不齐某个模块的版本已经更新了,这时线上的包会更新到最新的版本,但你的代码还是依据老版本来写的,这时可能会产生一些不知名的 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 版本);