學(xué)習(xí)記錄-pnpm

pnpm是什么惩嘉?

p代表performant挠阁,意為高性能的npm。
跟npm 和 yarn一樣都是JavaScript包管理工具硫朦,被稱(chēng)為快速的贷腕,節(jié)省磁盤(pán)空間的包管理工具。

為什么要用它咬展?它如何做到快速以及節(jié)省磁盤(pán)空間泽裳?

安裝在node_modules文件目錄如下

node_modules
  -- .bin
  -- .pnpm
  -- vite  ->符號(hào)鏈接
  -- less  ->符號(hào)鏈接
  -- ...等等在package.json定義在dependencies 和 devDependencies 的依賴(lài)包

pnpm依賴(lài)包安裝在哪?
對(duì)比npm和yarn破婆,它們下載后的依賴(lài)包是實(shí)打?qū)嵉脑诟髯皂?xiàng)目的node_modules內(nèi)涮总,也就是說(shuō),假如我有多個(gè)項(xiàng)目祷舀,每個(gè)項(xiàng)目都進(jìn)行一遍install瀑梗,毫無(wú)疑問(wèn),我整個(gè)磁盤(pán)的node_modules容量都是龐大的裳扯。

然而我們進(jìn)行pnpm的安裝后抛丽,終端會(huì)顯示這段話(huà)

Packages are hard linked from the content-addressable store to the virtual store.
  Content-addressable store is at: /mnt/h/.pnpm-store/v3
  Virtual store is at:             node_modules/.pnpm
  1. 分析第二行,意思是pnpm的包存儲(chǔ)在 /mnt/h/.pnpm-store/v3 這個(gè)地方饰豺,我的所有項(xiàng)目都在h盤(pán)亿鲜,它就把依賴(lài)包的內(nèi)容都安裝在h盤(pán)根目錄上。
  2. 分析第三行冤吨,意思是虛擬目錄構(gòu)建在你當(dāng)前項(xiàng)目的node_modules/.pnpm上蒿柳,也就是我們看到的.pnpm。
  3. 再分析第一行:依賴(lài)包從CAS(內(nèi)容可尋址存儲(chǔ))硬鏈接(hard linked)到虛擬存儲(chǔ)區(qū)(virtual store)
    以結(jié)果為導(dǎo)論锅很,那就是說(shuō)
    我h盤(pán)所有項(xiàng)目所用到的依賴(lài)包(在各自的.pnpm目錄內(nèi))其馏,通過(guò)了某種手段(硬鏈接)到CAS(h盤(pán)根目錄創(chuàng)建的倉(cāng)庫(kù))里獲取依賴(lài)包的內(nèi)容。

從而就減少了很多重復(fù)性依賴(lài)包的構(gòu)建爆安,減少了安裝時(shí)間也節(jié)省磁盤(pán)空間叛复。

補(bǔ)充:關(guān)于符號(hào)鏈接

我們可以看到 .pnpm 同級(jí)目錄下會(huì)有 我們定義引用的帶有符號(hào)鏈接的依賴(lài)包,比如例子中的vite。
其實(shí)可以打開(kāi).pnpm文件夾褐奥,細(xì)心找一下也是可以找到vite的內(nèi)容咖耘。

符號(hào)鏈接就是把package.json目錄下定義用到的依賴(lài)包,在.pnpm下找撬码,找到后抽出來(lái)儿倒,放到同級(jí)目錄下,方便查看源碼呜笑。
我覺(jué)得這一點(diǎn)真的很好夫否,依賴(lài)包的結(jié)構(gòu)就很清晰了,也方便查找源碼叫胁。

總結(jié)

個(gè)人理解的依賴(lài)包的調(diào)用流程:

  1. 項(xiàng)目需要調(diào)用依賴(lài)包A(import A)
  2. 從node_modules目錄上找到依賴(lài)包A
  3. 依賴(lài)包A通過(guò)符號(hào)鏈接凰慈,鏈接到虛擬倉(cāng)庫(kù)(/.pnpm)內(nèi)找到相應(yīng)的依賴(lài)包A
  4. 虛擬倉(cāng)庫(kù)(/.pnpm)通過(guò)硬鏈接到CAS(/.pnpm-store/v3)找到依賴(lài)包A內(nèi)容并返回

學(xué)習(xí)資料

2022年了,你還沒(méi)用pnpm嗎驼鹅?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末微谓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子输钩,更是在濱河造成了極大的恐慌豺型,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件买乃,死亡現(xiàn)場(chǎng)離奇詭異姻氨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)为牍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)哼绑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人碉咆,你說(shuō)我怎么就攤上這事≈鳎” “怎么了疫铜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)双谆。 經(jīng)常有香客問(wèn)我壳咕,道長(zhǎng),這世上最難降的妖魔是什么顽馋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任谓厘,我火速辦了婚禮,結(jié)果婚禮上寸谜,老公的妹妹穿的比我還像新娘竟稳。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布他爸。 她就那樣靜靜地躺著聂宾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诊笤。 梳的紋絲不亂的頭發(fā)上系谐,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音讨跟,去河邊找鬼纪他。 笑死,一個(gè)胖子當(dāng)著我的面吹牛晾匠,可吹牛的內(nèi)容都是我干的茶袒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼混聊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼弹谁!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起句喜,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤预愤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后咳胃,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體植康,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年展懈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了销睁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡存崖,死狀恐怖冻记,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情来惧,我是刑警寧澤冗栗,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站供搀,受9級(jí)特大地震影響隅居,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜葛虐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一胎源、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屿脐,春花似錦涕蚤、人聲如沸宪卿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)愧捕。三九已至,卻和暖如春申钩,著一層夾襖步出監(jiān)牢的瞬間次绘,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工撒遣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邮偎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓义黎,卻偏偏與公主長(zhǎng)得像禾进,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子廉涕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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