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

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

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

  一、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的問題...github

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

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

  若是二者是同一狀態,那麼執行`npm i `都會根據lock下載,不會理會package實際包的版本是否有新。開發

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

相關文章
相關標籤/搜索