package.json 和 package-lock.json

1. 前言

  1. 應(yīng)該很多人 搞不清楚, 我們天天見天天用的 這個 package.jsonpackage-lock.json到底有啥關(guān)系
  2. 那今天就來捋一下

2. package.json

  1. 首先在說下這個 我們自以為覺得熟的不能在熟的package.json
  2. package.json是幫我們管理項目中的依賴包的,讓我們遠離了依賴地獄。
  3. 遵循commonJS規(guī)范 ,通過 npm管理,使用一些簡單的命令,自動生成package.json, 安裝包依賴關(guān)系都由package.json來管理,我們幾乎不必考慮它們。

2.1 版本控制

  • 什么是 版本號
  1. 版本號由三部分組成:major.minor.patch,主版本號.次版本號.修補版本號。
  2. 例如:1.2.3,主要版本1,次要版本2,補丁3。
  1. 補丁中的更改表示不會破壞任何內(nèi)容的錯誤修復(fù)。
  2. 次要版本的更改表示不會破壞任何內(nèi)容的新功能。
  3. 主要版本的更改代表了一個破壞兼容性的大變化。如果用戶不適應(yīng)主要版本更改,則內(nèi)容將無法正常工作。
  • 指定依賴包版本

1.~會匹配最近的小版本依賴包,
比如 ~1.2.3 會匹配所有 1.2.x 版本,但是不包括 1.3.0

  1. ^會匹配最新的大版本依賴包,
    比如 ^1.2.3 會匹配所有 1.x.x 的包,包括 1.3.0,但是不包括 2.0.0
  2. *安裝最新版本的依賴包,
    比如 *1.2.3 會匹配 x.x.x
  • 如何選擇
  1. 因為版本或多或少總會有些小bug所以小的改動是會經(jīng)常有的 ,用~ 和 ^ 則可以解決這個問題
  1. 需要注意 ^版本更新可能比較大,會造成項目代碼錯誤,所以 建議使用 ~ 來標記版本號,這樣可以保證項目不會出現(xiàn)大的問題,也能保證包中的小bug可以得到修復(fù)。
  • 團隊開發(fā) 如何控制版本
  1. 實際開發(fā)場景 都是團隊 我們也經(jīng)常進行 代碼管理,一般情況下 是不會把 依賴包/node_modules上傳到云端的,所以 很可能每個人在安裝的時候 版本都會有小的差別
  2. 而且有時候我們并不想要使用最新版本的依賴
  3. 比如jQuery 有些只需要使用 1.10 或者2.x
  4. 所以我們需要 固定版本號或者鎖死版本號

3. package-lock.json

  1. 它會在npm 更改 node_modules目錄樹 或者 package.json 時自動生成的 ,它準確的描述了當前項目npm包的依賴樹,并且在隨后的安裝中會根據(jù)package-lock.json來安裝,保證是相同的一個依賴樹,不考慮這個過程中是否有某個依賴有小版本的更新。
  2. 它的產(chǎn)生就是來對整個依賴樹進行版本固定的(鎖死
  1. 當我們在一個項目中npm install時候,會自動生成一個package-lock.json文件,和package.json在同一級目錄下。package-lock.json記錄了項目的一些信息和所依賴的模塊。這樣在每次安裝都會出現(xiàn)相同的結(jié)果. 不管你在什么機器上面或什么時候安裝。
  1. 當我們下次再npm install時候,
    npm 發(fā)現(xiàn)如果項目中有 package-lock.json 文件,
    會根據(jù)package-lock.json 里的內(nèi)容來處理和安裝依賴而不再根據(jù) package.json。
  1. 需要 注意的是,使用cnpm install時候,并不會生成 package-lock.json 文件,也不會根據(jù) package-lock.json 來安裝依賴包,還是會使用 package.json來安裝。


參考資料


初心

我所有的文章都只是基于入門,初步的了解;是自己的知識體系梳理,如有錯誤,道友們一起溝通交流;
如果能幫助到有緣人,非常的榮幸,一切為了部落的崛起;
共勉
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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