咱們在項目中安裝依賴包最經常使用的兩個工具分別是npm和yarn,兩個工具安裝依賴包的命令分別是npm install
和yarn install
。算法
不管是用哪一種命令進行安裝,其均會按照package.json文件中所列的依賴項進行安裝。下面看一看package.json、package-lock.json以及yarn.lock三個文件之間的關係。npm
主要用來定義項目中須要依賴的包以及相關執行命令與附加信息。json
在 npm install
時候生成該文件,用以記錄當前狀態下實際安裝的各個npm package的具體來源和版本號。緩存
^
:放在版本號以前,表示向後兼容依賴,就是在大版本號不變的狀況下下載最新版的包。項目中引入的包版本號以前常常會加^
號,每次在執行npm install
以後下載的包都會發生變化。爲了系統的穩定性考慮,每次執行完npm install
以後會對應生成package-lock.json文件,該文件記錄了上一次安裝的具體的版本號,這樣就提供了一個參考,在出現版本兼容性問題的時候,就能夠參考這個文件來修改版本號便可。安全
Yarn 是 Facebook, Google, Exponent 和 Tilde 開發的一款新的 JavaScript 包管理工具。就像咱們能夠從官方文檔瞭解那樣,它的目的是解決這些團隊使用 npm 面臨的少數問題,即:
安裝的時候沒法保證速度/一致性。
安全問題,由於 npm 安裝時容許運行代碼。工具
Yarn 一樣是一個從 npm 註冊源獲取模塊的新的 CLI 客戶端,其註冊的方式不會有任何變化能夠正常獲取與發佈包。.net
Yarn是一個快速可靠安全的依賴管理工具。 主要的三個特色:code
快速,Yarn會緩存它下載的每一個包,因此無需重複下載。它還能並行化操做以最大化資源利用率。
安全,Yarn會在每一個安裝包被執行前校驗其完整性。
可靠, Yarn使用格式詳盡而又簡潔的lockfile文件和肯定性算法來安裝依賴,可以保證在一個系統上的運行的安裝過程也會以一樣的方式運行在其餘系統上。blog
關於yarn.lock文件,官網的解釋以下:教程
由Yarn管理
您的yarn.lock文件是自動生成的,也徹底Yarn來處理。當你使用Yarn CLI添加/升級/刪除 依賴項的時,它將自動更新到您的yarn.lock文件。不要直接編輯這個文件,由於很容易破壞某些東西。 僅限當前包 在安裝期間,Yarn將僅使用頂級yarn.lock文件,並將忽略依賴項中存在的任何yarn.lock文件。頂級yarn.lock文件包含Yarn須要鎖定整個依賴關係樹中全部包的版本的全部內容。
yarn.lock的具體的做用是什麼?它能給項目帶來什麼做用?
Yarn使用肯定性算法,在將文件放置到須要的位置以前構建整個依賴關係樹。安裝過程當中重要信息存儲到yarn.lock文件中,以即可以在安裝依賴關係的每一個系統之間共享!此文件包含有關已安裝的每一個依賴項的確切版本的信息以及代碼的校驗和以確保代碼徹底相同。
yarn.lock會鎖定你安裝的每一個依賴項的版本,這能夠確保你不會意外得到不良依賴; 而且會避免因爲開發人員意外更改或則更新版本,而致使糟糕的狀況!
寫在最後
使用npm
安裝生成了一個package-lock.json文件來註冊全部的安裝的依賴. 然而它不能保證每次npm install
都會安裝裏面的指定的包的版本,可是yarn.lock能夠。
yarn詳細入門教程
yarn.lock文件
項目裏的package.json、package-lock.json、yarn.lock文件