日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Node.js中package.json中库的版本号详解(^和~区别)

發(fā)布時間:2025/1/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node.js中package.json中库的版本号详解(^和~区别) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。