Node.js中package.json中库的版本号详解(^和~区别)
Node.js中package.json中庫的版本號詳解(^和~區(qū)別)
當(dāng)我們查看package.json中已安裝的庫的時候,會發(fā)現(xiàn)他們的版本號之前都會加一個符號,有的是插入符號(^),有的是波浪符號(~)。那么他們到底有什么區(qū)別呢?先貼一個例子,對照例子來做解釋:
"dependencies": {"bluebird": "^3.3.4","body-parser": "~1.15.2"}bluebird的版本號:^3.3.4
body-parse的版本號:~1.15.2
當(dāng)我們使用最新的Node運行‘npm instal --save xxx’,的時候,他會優(yōu)先考慮使用插入符號(^)而不是波浪符號(~)了。
這對于你來說意味這什么呢?首先我們需要理解這兩者(~和^)的區(qū)別。
波浪符號(~):他會更新到當(dāng)前minor version(也就是中間的那位數(shù)字)中最新的版本。放到我們的例子中就是:body-parser:~1.15.2,這個庫會去匹配更新到1.15.x的最新版本,如果出了一個新的版本為1.16.0,則不會自動升級。波浪符號是曾經(jīng)npm安裝時候的默認(rèn)符號,現(xiàn)在已經(jīng)變?yōu)榱瞬迦敕枴?/p>
插入符號(^):這個符號就顯得非常的靈活了,他將會把當(dāng)前庫的版本更新到當(dāng)前major version(也就是第一位數(shù)字)中最新的版本。放到我們的例子中就是:bluebird:^3.3.4,這個庫會去匹配3.x.x中最新的版本,但是他不會自動更新到4.0.0。
總結(jié)一下:
~1.15.2 := >=1.15.2 <1.16.0 ^3.3.4 := >=3.3.4 <4.0.0最后解釋下之前提到的minor verision和major version:
1.15.2對應(yīng)就是MAJOR,MINOR.PATCH:1是marjor version;15是minor version;2是patch version。
MAJOR:這個版本號變化了表示有了一個不可以和上個版本兼容的大更改。
MINOR:這個版本號變化了表示有了增加了新的功能,并且可以向后兼容。
PATCH:這個版本號變化了表示修復(fù)了bug,并且可以向后兼容。
因為major version變化表示可能會影響之前版本的兼容性,所以無論是波浪符號還是插入符號都不會自動去修改major version,因為這可能導(dǎo)致程序crush,可能需要手動修改代碼。
參考鏈接:https://blog.csdn.net/njweiyukun/article/details/70309066
官方詳解:https://docs.npmjs.com/misc/semver#advanced-range-syntax
總結(jié)
以上是生活随笔為你收集整理的Node.js中package.json中库的版本号详解(^和~区别)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: npm教程:如何查看TypeScript
- 下一篇: k8s拉取私有仓库镜像:通过config