npm包 ^和~的区别

版本号

GNU 风格版本号

主版本号 . 子版本号 [. 修正版本号[ build- 编译版本号 ]]

英文对照 : Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]]

示例1:1.2

示例2:1.2.0

示例3:1.2.0 build-1234

Windows 风格版本号

主版本号 . 子版本号 [ 修正版本号 [. 编译版本号 ]]

英文对照 : Major_Version_Number.Minor_Version_Number[Revision_Number[.Build_Number]]

示例1:1.2.0.1234

对比

我建议不使用^和~,因为这两种下载的包的版本可能都和写的版本不一样,会导致以后重新下载依赖的时候出问题,还是建议使用精确的版本号。

~version

大概匹配某个版本

如果minor版本号指定了,那么minor版本号不变,而patch版本号任意

如果minor和patch版本号未指定,那么minor和patch版本号任意

简单的说就是

前两个版本号保持一致,如果没有第二个则只保持第一个一致。

示例

  • ~1.1.2,表示>=1.1.2 <1.2.0,可以是1.1.2,1.1.3,1.1.4,…..,1.1.n

  • ~1.1,表示>=1.1.0 <1.2.0,可以是同上

  • ~1,表示>=1.0.0 <2.0.0,可以是1.0.0,1.0.1,1.0.2,…..,1.0.n,1.1.n,1.2.n,…..,1.n.n

^version

兼容某个版本

版本号中最左边的非0数字的右侧可以任意

如果缺少某个版本号,则这个版本号的位置可以任意

简单的说就是

第一个版本号保持一致。

示例

  • ^1.1.2 ,表示>=1.1.2 <2.0.0,可以是1.1.2,1.1.3,…..,1.1.n,1.2.n,…..,1.n.n

  • ^0.2.3 ,表示>=0.2.3 <0.3.0,可以是0.2.3,0.2.4,…..,0.2.n

  • ^0.0,表示 >=0.0.0 <0.1.0,可以是0.0.0,0.0.1,…..,0.0.n