真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

Node.js中為什么需要package鎖-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關Node.js中為什么需要package鎖的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)主營當雄網站建設的網絡公司,主營網站建設方案,重慶APP開發(fā),當雄h5小程序設計搭建,當雄網站營銷推廣歡迎當雄等地區(qū)企業(yè)咨詢

~和^的區(qū)別

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

~和^的區(qū)別

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

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

以版本號x.y.z為例
x:主版本號, 當你做了不兼容的API修改
y:次版本號, 當你做了向下兼容的功能性問題
z:修訂號, 當你做了向下兼容的問題修復

~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, 則不會自動升級

可以參考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是開源的世界, 并不是所有的都嚴格遵循這種規(guī)則, 所以會出現(xiàn)上述的問題;

為什么需要package鎖

有如下幾個可能原因, 在某些情況下, package.json是無法保證每個人自己電腦上執(zhí)行的 npm install 后安裝的依賴版本都是一樣的
1.如果package.json中記錄的依賴包的版本是一個版本范圍, 一旦執(zhí)行npm i 會導致這個包更新到最新版本
2.就算你依賴了一個固定版本的包(如A 1.1.1), 但你依賴的包A可能依賴其他的包B,而A在聲明依賴時可能也使用了semser命名, 如 ^1.2.3, 如果包B release 了新版, 也會導致包B會安裝到更新版本
3.不同人使用的npm程序的版本不同

如果依賴包的版本不一致, 會導致開發(fā)環(huán)境和生產環(huá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)有或將有的 package-lock.json 文件。

3.使用yarn

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

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

感謝各位的閱讀!關于Node.js中為什么需要package鎖就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


文章題目:Node.js中為什么需要package鎖-創(chuàng)新互聯(lián)
本文來源:http://weahome.cn/article/ppgid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部