package.json 和 package-lock.json

如果項(xiàng)目中只有package.json,那么第一次install會(huì)生成一個(gè)package-lock.json的文件

那么生成的package-lock.json中的依賴版本和package.json中的一定會(huì)一致嗎?

  • 答案是否定的

  • 如果包A在遠(yuǎn)程中是1.0.2, 而在package.json中是1.0.0,那么在第一次生成的package-lock.json文件中,依賴版本也是1.0.2

  • 測(cè)試如下
    1、在遠(yuǎn)程準(zhǔn)備了一個(gè)npm-test-lxy的包,并發(fā)了三個(gè)小版本1.0.0 、1.0.1、 1.0.2

    遠(yuǎn)程.jpg

    2、本地package.json文件中寫死1.0.0
    本地package.jpg

    3、執(zhí)行 npm install 發(fā)現(xiàn)生成的lock文件和實(shí)際下載到node_modules的是最新版本
    測(cè)試結(jié)果.jpg

  • 但實(shí)際項(xiàng)目開發(fā),lock文件肯定是上傳到git倉庫上的,每個(gè)開發(fā)人員的項(xiàng)目初始會(huì)有這個(gè)文件,并且保持一直


那么當(dāng)lock文件和package.json不一致,且lock中的版本不是最新版本,npm install 會(huì)根據(jù)lock中的版本下載還是根據(jù)package.json下載,還是會(huì)下載最新版本并更新到lock里呢

  • 帶著這樣的疑問,開始第二個(gè)試驗(yàn)


    1.jpg
  • 執(zhí)行 npm install 之后 node_modules里面下載的包的版本是 1.0.1


那么我手動(dòng)更改package.json中的包的版本,會(huì)怎樣呢

2.jpg
  • 再次install,結(jié)果如下


    3.jpg

結(jié)論

  1. 如果lock文件中的版本高于package.json, 項(xiàng)目每次 install 都會(huì)根據(jù) lock文件 的具體版本去拉取包,但并不會(huì)更新package.json中寫的版本號(hào)
  2. 如果lock文件中的版本低于package.json,項(xiàng)目install的時(shí)候會(huì)下載當(dāng)前包大版本下的最新小版本,并更新lock
  3. 等于的情況,就是下載當(dāng)前版本號(hào)的依賴
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容