当我们打开 package.json 文件并搜索依赖属性时,我们会在其中找到列为依赖属性package-name:package-version的嵌套对象的包。现在查看包版本,我们发现一些数字由三个点分隔(例如2.6.2 )。
NPM 版本使用三个点分隔的数字编写,左起第一个数字表示主要版本,左起第二个数字表示次要版本,第三个数字表示软件包的补丁版本。
语法: npm 版本的语法如下所示。
Major.Minor.Patch
波浪号 (~) 表示法:用于匹配最新的补丁版本。插入符号 ~ 符号冻结主要版本和次要版本。正如我们所知,补丁更新是错误修复,这就是为什么我们可以说 ~ 符号允许我们自动接受错误修复。
示例: ~1.2.0 将更新所有未来的补丁更新。我们只需要编写 ~1.2.0 和所有下一个补丁更新依赖项。例如,1.2。 1,1.2。 2,1.2。 5 ……………1.2.x.
注意:补丁更新是包中非常小的安全更改,这就是~version大致等同于版本的原因。
插入符号 (^) 表示法:用于在补丁更新的同时自动更新次要更新。
示例: ^1.2.4 将更新所有未来的Minor和补丁更新,例如,如果发生任何更新,^1.2.4 会自动将依赖项更改为1.xx。
使用插入符号,定期查看我们的代码是否与最新版本兼容很重要。
package.json 中波浪号 (~) 和插入符号 (^) 的区别:
Tilde(~) notation |
Caret(^) notation |
Used for Approximately equivalent to version. | Used for Compatible with version. |
It will update you to all future patch versions, without incrementing the minor version. ~1.2.3 will use releases from 1.2.3 to <1.3. | It will update you to all future minor/patch versions, without incrementing the major version. ^2.3.4 will use releases from 2.3.4 to <3.0.0 |
It gives you bug fix releases. | It gives you backwards-compatible new functionality as well. |
It will update in decimals. | It will update to its latest version in numbers. |
Not a default notation used by NPM. | Used by NPM as default notation. |
Example: ~1.0.2 | Example: ^1.0.2 |
参考资料: https://docs.npmjs.com/about-semantic-versioning