本文摘自PHP中文网,作者不言,侵删。
本篇文章给大家带来的内容是关于Node.js中package.json中库的版本号的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
~和^的区别
最近总是碰到一些问题, 在本地好好的, 在线上就出现了问题, 本地也一直复现不了, 后来把node_modules目录删除了之后, 重新安装, 就在本地复现了这个问题,可以看了git history, 并没有人修改package.json中的版本号,于是认真的了解了一下package.json中库的版本号;
~和^的区别
1 2 |
|
npm install --save xxx, 会优先考虑使用 ^
而不是~
以版本号x.y.z为例
x:主版本号, 当你做了不兼容的API修改
y:次版本号, 当你做了向下兼容的功能性问题
z:修订号, 当你做了向下兼容的问题修复
~x.y.z
, 会更新到y最新的版本, 例如 body-parser
: ~1.15.2, 这个库会去匹配到1.15.z的最新版本, 如果出现了1.16.0, 则不会自动升级^x.y.z
, 会更新到x的最新版本, 例如 babel-loader
: ^7.1.1, 这个库会去匹配7.y.z的最新版本, 如果出现了8.1.1, 则不会自动升级
可以参考npm官方给出的解释
^1.2.3 := >=1.2.3 <2.0.0
^0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4
大多数情况下遵循这种版本号规则的依赖包都没问题, 但是npm是开源的世界, 并不是所有的都严格遵循这种规则, 所以会出现上述的问题;
为什么需要package锁
相关阅读 >>
更多相关阅读请进入《javascript》频道 >>
Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者