当我们在安装某一个依赖包的时候会发现版本号前面带有 ^ 或者 ~ , 这些到底是什么意思呢?先看看下面的依赖包,举例说明:
{
"dependencies": {
"redux": "^4.0.1",
"eslint-config-egg": "~6.0.0",
"webpack": "4.28.3"
}
}
其实我们安装的大部分依赖包前面都有 ^ 符号, ~ 符号就较少了。
下面详细的介绍这些区别
^ 插入符合
插入符号用得最多的,因为它非常的灵活,可以使依赖包向后兼容。
拿上面的依赖包举例说明, redux版本号为 4.0.1 , 当我们执行 npm install 它将会更新次版本号和修订版本号。
打个比如redux 4.x最新版本是 v4.7.3 而 5.x最新是 v5.1.0。 那么npm install 就会更新到v4.7.3而不会更新v5.1.0, 主版本号是不变的。
~ 波浪符合
这个符号用的最少的,因为在曾经依赖包默认是波浪符号的,现在已经变成了插入符号。
这个符号只会更新修订版本号,也就是第3位。
举个例子:“eslint-config-egg” 当我们安装这个依赖包时它会安装最新的 6.0.X , 只会更新第三位。
既没有 ^ 也没有 ~
这个最容易理解了,如果包的版本号是 4.28.3 那么安装的时候就是 4.28.3。
总结
当发布一个包时如果非常有把握向后兼容,那么完全可以用 ^ , 否则就像webpack这样子固定版本号比较稳妥。
之前写了一篇关于版本号说明可以了解下 你了解版本号吗?