npm install 安裝過程分析


摘錄自:https://mp.weixin.qq.com/s/5tmND0G_ZkYVR7Dmug0ugQ

首先檢查 .npmrc 文件

優先級為:項目級的 .npmrc 文件 > 用戶級的 .npmrc 文件> 全局級的 .npmrc 文件 > npm 內置的 .npmrc 文件

檢查項目中有無 lock 文件。

若無 lock 文件

a. 則從 npm 遠程倉庫獲取包信息。

b. 根據 package.json 構建依賴樹,構建過程:

  • 構建依賴樹時,不管其是直接依賴還是子依賴的依賴,優先將其放置在 node_modules 根目錄。
  • 當遇到相同模塊時,判斷已放置在依賴樹的模塊版本是否符合新模塊的版本范圍,如果符合則跳過,不符合則在當前模塊的 node_modules 下放置該模塊。
  • 注意這一步只是確定邏輯上的依賴樹,並非真正的安裝,后面會根據這個依賴結構去下載或拿到緩存中的依賴包

c. 接着 在緩存中依次查找依賴樹中的每個包。

若存在緩存:將緩存按照依賴結構解壓到 node_modules;

若不存在緩存:

  • 從 npm 遠程倉庫下載包
  • 校驗包的完整性
  • 校驗不通過則重新下載
  • 校驗通過:將下載的包復制到 npm 緩存目錄,將下載的包按照依賴結構解壓到 node_modules

d. 將包解壓到 node_modules
e. 生成 lock 文件

若有 lock 文件:

  • 檢查 package.json 中的依賴版本是否和 package-lock.json 中的依賴有沖突。
  • 如果沒有沖突,直接跳過獲取包信息、構建依賴樹過程,開始在緩存中查找包信息,后續過程相同


免責聲明!

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



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