NPM

NPM是什么

  • NPM的全稱是Node Package Manager,是Node.js的一個包管理工具,它是隨Node一起安裝的。

NPM能做什么

  • 從NPM服務(wù)器下載別人寫好的包或命令行程序到本地直接使用。
  • 將自己寫好的包或命令行程序上傳到NPM服務(wù)器供別人使用。

NPM組成部分

  • npm官網(wǎng)
  • 注冊表(注冊表相當(dāng)于一個大型的公用數(shù)據(jù)庫,記錄了JavaScript組件的一些元信息)
  • 命令行工具

使用NPM命令安裝依賴模塊

  • 安裝
npm install <Module Name>
  • 引入
var mModule = require('Module Name');

package-lock.json

項目中安裝依賴后在自動生成package-lock.json文件,里面包含安裝的依賴信息,主要是用來鎖定依賴版本,確保團(tuán)隊之間安裝依賴時不會出現(xiàn)差異。

npm install原理

整體流程:

  • 檢查 .npmrc 文件:優(yōu)先級為:項目級的 .npmrc 文件 > 用戶級的 .npmrc 文件> 全局級的 .npmrc 文件 > npm 內(nèi)置的 .npmrc 文件

  • 檢查項目中有無 lock 文件。

  • 無 lock 文件:

    • 從 npm 遠(yuǎn)程倉庫獲取包信息

    • 根據(jù) package.json 構(gòu)建依賴樹,構(gòu)建過程:

      • 構(gòu)建依賴樹時,不管其是直接依賴還是子依賴的依賴,優(yōu)先將其放置在 node_modules 根目錄。

      • 當(dāng)遇到相同模塊時,判斷已放置在依賴樹的模塊版本是否符合新模塊的版本范圍,如果符合則跳過,不符合則在當(dāng)前模塊的 node_modules 下放置該模塊。

      • 注意這一步只是確定邏輯上的依賴樹,并非真正的安裝,后面會根據(jù)這個依賴結(jié)構(gòu)去下載或拿到緩存中的依賴包

    • 在緩存中依次查找依賴樹中的每個包

    • 不存在緩存:

      • 從 npm 遠(yuǎn)程倉庫下載包

      • 校驗包的完整性

        • 校驗不通過:

        • 重新下載

        • 校驗通過:

        • 將下載的包復(fù)制到 npm 緩存目錄

        • 將下載的包按照依賴結(jié)構(gòu)解壓到 node_modules

    • 存在緩存:將緩存按照依賴結(jié)構(gòu)解壓到 node_modules

    • 將包解壓到 node_modules

    • 生成 lock 文件

  • 有 lock 文件:

    • 檢查 package.json 中的依賴版本是否和 package-lock.json 中的依賴有沖突。

    • 如果沒有沖突,直接跳過獲取包信息、構(gòu)建依賴樹過程,開始在緩存中查找包信息,后續(xù)過程相同

?著作權(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)容