package.json 與 package-lock.json 的區別


  package.json 這個文件是 npm init 時創建的一個文件,會記錄當前整個項目中的一些基礎信息。而 package-lock.json 這個文件卻是 node_modules 文件夾或者 package.json 文件發生變化時自動生成的。這個文件主要功能是確定當前安裝的包的依賴,以便后續重新安裝的時候生成相同的依賴,而忽略項目開發過程中有些依賴已經發生的更新。

  自npm 5.0版本發布以來,npm i的規則發生了三次變化。

  1、npm 5.0.x 版本,不管package.json怎么變,npm i 時都會根據lock文件下載
    package-lock.json file not updated after package.json file is changed · Issue #16866 · npm/npm
    這個 issue 控訴了這個問題,明明手動改了package.json,為啥不給我升級包!然后就導致了5.1.0的問題...

  2、5.1.0版本后 npm install 會無視lock文件 去下載最新的npm
    why is package-lock being ignored? · Issue #17979 · npm/npm
    這個issue控訴這個問題,最后演變成5.4.2版本后的規則。

  3、5.4.2版本后 why is package-lock being ignored? · Issue #17979 · npm/npm
    大致意思是,如果改了package.json,且package.json和lock文件不同,那么執行`npm i`時npm會根據package中的版本號以及語義含義去下載最新的包,並更新至lock。

  如果兩者是同一狀態,那么執行`npm i `都會根據lock下載,不會理會package實際包的版本是否有新。

(本文是轉載別處的文章,至於原文出處並沒有找。。。)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM