最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js中package.json中庫的版本號(~和^)

 更新時間:2019年04月02日 09:40:58   作者:funnycoderstar  
這篇文章主要介紹了Node.js中package.json中庫的版本號(~和^),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

~和^的區(qū)別

最近總是碰到一些問題, 在本地好好的, 在線上就出現(xiàn)了問題, 本地也一直復(fù)現(xiàn)不了, 后來把node_modules目錄刪除了之后, 重新安裝, 就在本地復(fù)現(xiàn)了這個問題,可以看了git history, 并沒有人修改package.json中的版本號,于是認(rèn)真的了解了一下package.json中庫的版本號;

~和^的區(qū)別

"babel-loader": "^7.1.1",
"body-parser": "~1.15.2"

npm install --save xxx, 會優(yōu)先考慮使用 ^而不是~

以版本號x.y.z為例

x:主版本號, 當(dāng)你做了不兼容的API修改

y:次版本號, 當(dāng)你做了向下兼容的功能性問題

z:修訂號, 當(dāng)你做了向下兼容的問題修復(fù)

~x.y.z, 會更新到y(tǒng)最新的版本, 例如 body-parser: ~1.15.2, 這個庫會去匹配到1.15.z的最新版本, 如果出現(xiàn)了1.16.0, 則不會自動升級
^x.y.z, 會更新到x的最新版本, 例如 babel-loader: ^7.1.1, 這個庫會去匹配7.y.z的最新版本, 如果出現(xiàn)了8.1.1, 則不會自動升級

'~'(波浪符號):他會更新到當(dāng)前minor version(也就是中間的那位數(shù)字)中最新的版本。放到我們的例子中就是:"exif-js": "~2.3.0",這個庫會去匹配更新到2.3.x的最新版本,如果出了一個新的版本為2.4.0,則不會自動升級。波浪符號是曾經(jīng)npm安裝時候的默認(rèn)符號,現(xiàn)在已經(jīng)變?yōu)榱瞬迦敕枴?br /> '^'(插入符號): 這個符號就顯得非常的靈活了,他將會把當(dāng)前庫的版本更新到當(dāng)前major version(也就是第一位數(shù)字)中最新的版本。放到我們的例子中就是:"vue": "^2.2.2", 這個庫會去匹配2.x.x中最新的版本,但是他不會自動更新到3.0.0。

可以參考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

大多數(shù)情況下遵循這種版本號規(guī)則的依賴包都沒問題, 但是npm是開源的世界, 并不是所有的都嚴(yán)格遵循這種規(guī)則, 所以會出現(xiàn)上述的問題;

為什么需要package鎖

有如下幾個可能原因, 在某些情況下, package.json是無法保證每個人自己電腦上執(zhí)行的 npm install 后安裝的依賴版本都是一樣的

1.如果package.json中記錄的依賴包的版本是一個版本范圍, 一旦執(zhí)行npm i 會導(dǎo)致這個包更新到最新版本

2.就算你依賴了一個固定版本的包(如A 1.1.1), 但你依賴的包A可能依賴其他的包B,而A在聲明依賴時可能也使用了semser命名, 如 ^1.2.3, 如果包B release 了新版, 也會導(dǎo)致包B會安裝到更新版本

3.不同人使用的npm程序的版本不同

如果依賴包的版本不一致, 會導(dǎo)致開發(fā)環(huán)境和生產(chǎn)環(huán)境產(chǎn)品不一致的行為; 或者導(dǎo)致不同團隊成員之前也產(chǎn)品環(huán)境差異

如何解決包版本不一致的情況

1.npm 使用package-lock.json文件來解決這個問題

執(zhí)行npm install會自動生成package.json文件, 只要執(zhí)行普通的安裝, 更新等可能會修改 package.json的npm命令, 都會自動同步修改package-lock.json文件

npm install xxx
npm rm xxx
npm update xxx

2.npm 還支持npm-shrinkwrap.json, 和package-lock.json功能完全一樣

執(zhí)行 npm shrinkwrap來生成npm-shrinkwrap.json

此命令將根據(jù) package-lock.json 文件創(chuàng)建一個新的或覆蓋已有的 npm-shrinkwrap.json 文件。 此命令創(chuàng)建和更新的文件將優(yōu)先于任何其他現(xiàn)有或?qū)⒂械?package-lock.json 文件。

3.使用yarn

使用yarn主要有一下優(yōu)點

  • 快速: 會緩存它下載的每個包,無需重復(fù)下載;能并行化操作以最大資源利用率
  • 可靠:使用格式詳盡而又簡潔的 lockfile文件 和確定性算法來安裝依賴,能夠保證在一個系統(tǒng)上的運行的安裝過程也會以同樣的方式運行在其他系統(tǒng)上。
  • 安全: 安裝包被執(zhí)行前校驗其完整性
  • yarn速度比npm快一些, yarn的鎖文件是yarn.lock, 能解決包版本不一致的情況

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.js結(jié)合FFmpeg構(gòu)建自動化腳本實現(xiàn)轉(zhuǎn)碼視頻

    Node.js結(jié)合FFmpeg構(gòu)建自動化腳本實現(xiàn)轉(zhuǎn)碼視頻

    傳統(tǒng)的視頻轉(zhuǎn)碼中,很常用的工具是FFmpeg,本文主要介紹了Node.js結(jié)合FFmpeg構(gòu)建自動化腳本實現(xiàn)轉(zhuǎn)碼視頻,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • npm設(shè)置同時從多個包源加載包的方法

    npm設(shè)置同時從多個包源加載包的方法

    本文主要介紹了npm 設(shè)置同時從多個包源加載包的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 深入解析Nodejs中的大文件讀寫

    深入解析Nodejs中的大文件讀寫

    這篇文章主要介紹了深入解析Nodejs中的大文件讀寫,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 學(xué)習(xí)Node.js模塊機制

    學(xué)習(xí)Node.js模塊機制

    這篇文章主要為大家詳細(xì)介紹了Node.js模塊機制,一篇關(guān)于Node.js模塊機制的學(xué)習(xí)筆記,感興趣的小伙伴們可以參考一下
    2016-10-10
  • nodejs制作小爬蟲功能示例

    nodejs制作小爬蟲功能示例

    這篇文章主要介紹了nodejs制作小爬蟲功能,結(jié)合實例形式分析了node.js安裝request、cheerio模塊及請求發(fā)送、數(shù)據(jù)庫操作等相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼

    nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼,有需要的朋友們可以參考下。
    2020-01-01
  • Nodejs基于LRU算法實現(xiàn)的緩存處理操作示例

    Nodejs基于LRU算法實現(xiàn)的緩存處理操作示例

    這篇文章主要介紹了Nodejs基于LRU算法實現(xiàn)的緩存處理操作,結(jié)合具體實例形式分析了LRU算法的原理、功能以及nodejs使用LRU算法實現(xiàn)緩存處理操作的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • Node.js API詳解之 tty功能與用法實例分析

    Node.js API詳解之 tty功能與用法實例分析

    這篇文章主要介紹了Node.js API詳解之 tty功能與用法,結(jié)合實例形式分析了Node.js API中tty的基本功能、用法及終端操作相關(guān)使用技巧,需要的朋友可以參考下
    2020-04-04
  • 關(guān)于Node.js的events.EventEmitter用法介紹

    關(guān)于Node.js的events.EventEmitter用法介紹

    本篇文章主要介紹了關(guān)于Node.js的events.EventEmitter用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • 利用Node.js和MySQL實現(xiàn)創(chuàng)建API服務(wù)器

    利用Node.js和MySQL實現(xiàn)創(chuàng)建API服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了如何使用Node.js和MySQL創(chuàng)建API服務(wù)器的步驟,這也是從前端邁向全棧的一個開始,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-01-01

最新評論

涪陵区| 九寨沟县| 习水县| 班玛县| 南部县| 廊坊市| 石渠县| 行唐县| 长宁县| 罗平县| 达拉特旗| 阜城县| 镇巴县| 永康市| 平凉市| 茂名市| 木里| 鹿泉市| 班玛县| 八宿县| 厦门市| 怀仁县| 西乌珠穆沁旗| 德化县| 根河市| 阿拉善右旗| 宁海县| 淄博市| 剑河县| 澄城县| 孟连| 河西区| 台南市| 博湖县| 德化县| 霍州市| 古田县| 淮南市| 缙云县| 陈巴尔虎旗| 元阳县|