npm install之后發(fā)生了什么——npm安裝機(jī)制

啟動(dòng)項(xiàng)目我們一般第一個(gè)執(zhí)行的命令就是安裝依賴包 npm install 。那么這個(gè)過程具體的執(zhí)行流程是怎么樣的呢碾盟?

安裝流程

流程圖

1.npm install執(zhí)行后犁河,會(huì)檢查并獲取npm配置扎狱,優(yōu)先級(jí)為

項(xiàng)目級(jí)別的.npmrc文件 > 用戶級(jí)別的.npmrc文件 > 全局的.npmrc文件 > npm內(nèi)置的.npmrc文件

查看配置命令npm config ls -l

2.然后檢查項(xiàng)目中是否有package-lock.json文件。

  • 如果有奶浦,檢查package-lock.json和package.json中聲明的依賴是否一致

    • 一致:直接使用 package-lock.json 中聲明的依賴,從緩存或者網(wǎng)絡(luò)中加載依賴
    • 不一致:各個(gè)版本的npm處理方式:


      image.png
  • 如果沒有踢星,根據(jù)package.json遞歸構(gòu)建依賴樹澳叉,然后根據(jù)依賴樹下載完整的依賴資源,在下載時(shí)會(huì)檢查是否有相關(guān)的資源緩存

    • 存在:將緩存資源解壓到node_modules中
    • 不存在:從遠(yuǎn)程倉(cāng)庫(kù)下載資源包沐悦,并校驗(yàn)完整性成洗,并添加到緩存,同時(shí)解壓到node_modules中

最后生成package-lock.json文件藏否。

構(gòu)建依賴樹時(shí)瓶殃,不管是直接依賴還是子依賴,都會(huì)按照扁平化的原則副签,優(yōu)先將其放置在node_modules根目錄中(最新的npm規(guī)范),在這個(gè)過程中遥椿,如果遇到相同的模塊,會(huì)檢查已放置在依賴樹中的模塊是否符合新模塊的版本范圍淆储,如果符合冠场,則跳過,不符合本砰,則在當(dāng)前模塊的node_modules下放置新模塊

npm安裝依賴時(shí)碴裙,會(huì)下載到緩存當(dāng)中,然后解壓到項(xiàng)目的node_modules中点额。
再次安裝依賴的時(shí)候舔株,會(huì)根據(jù)package-lock.json中存儲(chǔ)的 integrity、version咖楣、name 信息生成一個(gè)唯一的 key督笆,然后拿著key去目錄中查找對(duì)應(yīng)的緩存記錄,如果有緩存資源诱贿,就會(huì)找到tar包的hash值娃肿,根據(jù) hash 再去找緩存的 tar 包咕缎,并把對(duì)應(yīng)的二進(jìn)制文件解壓到相應(yīng)的項(xiàng)目 node_modules 下面,省去了網(wǎng)絡(luò)下載資源的開銷料扰。

// 獲取緩存位置
npm config get cache
// C:\Users\DB\AppData\Roaming\npm-cache

// 清除緩存
npm cache clean --force

另外_cacache 文件夾中不包含全局安裝的包凭豪,所以想清除存在問題的包為全局安裝包時(shí),需用 npm uninstall -g <package>解決

參考資料:https://blog.csdn.net/h03580/article/details/116021091?spm=1001.2014.3001.5501

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晒杈,一起剝皮案震驚了整個(gè)濱河市嫂伞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拯钻,老刑警劉巖帖努,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異粪般,居然都是意外死亡拼余,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門亩歹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匙监,“玉大人,你說我怎么就攤上這事小作⊥だ眩” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵顾稀,是天一觀的道長(zhǎng)达罗。 經(jīng)常有香客問我,道長(zhǎng)础拨,這世上最難降的妖魔是什么氮块? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮诡宗,結(jié)果婚禮上滔蝉,老公的妹妹穿的比我還像新娘。我一直安慰自己塔沃,他們只是感情好蝠引,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛀柴,像睡著了一般螃概。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鸽疾,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天吊洼,我揣著相機(jī)與錄音,去河邊找鬼制肮。 笑死冒窍,一個(gè)胖子當(dāng)著我的面吹牛递沪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播综液,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼款慨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了谬莹?” 一聲冷哼從身側(cè)響起檩奠,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎附帽,沒想到半個(gè)月后埠戳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡士葫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年乞而,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慢显。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖欠啤,靈堂內(nèi)的尸體忽然破棺而出荚藻,到底是詐尸還是另有隱情,我是刑警寧澤洁段,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布应狱,位于F島的核電站,受9級(jí)特大地震影響祠丝,放射性物質(zhì)發(fā)生泄漏疾呻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一写半、第九天 我趴在偏房一處隱蔽的房頂上張望岸蜗。 院中可真熱鬧,春花似錦叠蝇、人聲如沸璃岳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铃慷。三九已至,卻和暖如春蜕该,著一層夾襖步出監(jiān)牢的瞬間犁柜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工堂淡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留馋缅,地道東北人扒腕。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像股囊,于是被迫代替她去往敵國(guó)和親袜匿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容