我们在安装npm package 或查看package.json 的时候经常看到各种版本的指定方法,看起来容易混淆
如下所示:
"dependencies": { "core-js": "^3.22.5", "cowsay": "^1.5.0", "lodash": "4.17.21", "vue": "^3.2.34", "webpack": "~5.72.1" }
大家都知道npm 使用语义版本控制,他的概念很简单:所有的版本都有 3 个数字:x.y.z
。
- 第一个数字是主版本。
- 第二个数字是次版本。
- 第三个数字是补丁版本。
版本指定方式比较多,特在此进行汇总记录:
可以使用的符号如下:
^ | 只会执行不更改最左边非零数字的更新。 如果写入的是 ^0.13.0 ,则当运行 npm update 时,可以更新到 0.13.1 、0.13.2 等,但不能更新到 0.14.0 或更高版本。 如果写入的是 ^1.13.0 ,则当运行 npm update 时,可以更新到 1.13.1 、1.14.0 等,但不能更新到 2.0.0 或更高版本。 |
~ | 如果写入的是 〜0.13.0 ,则当运行 npm update 时,会更新到补丁版本:即 0.13.1 可以,但 0.14.0 不可以。 |
> | 接受高于指定版本的任何版本。 |
>= | 接受等于或高于指定版本的任何版本。 |
<= | 接受等于或低于指定版本的任何版本。 |
< | 接受低于指定版本的任何版本。 |
= | 接受确切的版本。【只能是版本号指定的当前版本】 |
- | 接受一定范围的版本。例如:2.1.0 - 2.6.2 。 |
|| | 组合集合。例如 < 2.1 || > 2.6 。 |
无符号 | 仅接受指定的特定版本(例如 1.2.1 )。 |
以上符号,可以合并其中的一些符号组合使用,例如 1.0.0 || >=1.1.0 <1.2.0
,即使用 1.0.0 或从 1.1.0 开始但低于 1.2.0 的版本。
另外latest :使用可用的最新版本。