精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Pnpm 是憑什么對 Npm 和 Yarn 降維打擊的

開發 前端
今天研究了一下它的機制,確實厲害,對 yarn 和 npm 可以說是降維打擊。那具體好在哪里呢?我們一起來看一下。

大家最近是不是經常聽到 pnpm,我也一樣。

今天研究了一下它的機制,確實厲害,對 yarn 和 npm 可以說是降維打擊。

那具體好在哪里呢?我們一起來看一下。

我們按照包管理工具的發展歷史,從 npm2 開始講起:

npm2

用 node 版本管理工具把 node 版本降到 4,那 npm 版本就是 2.x 了。

圖片

然后找個目錄,執行下 npm init -y,快速創建個 package.json。

然后執行 npm install express,那么 express 包和它的依賴都會被下載下來:

圖片

展開 express,它也有 node_modules:

圖片

再展開幾層,每個依賴都有自己的 node_modules:

圖片

也就是說 npm2 的 node_modules 是嵌套的。

這很正常呀?有什么不對么?

這樣其實是有問題的,多個包之間難免會有公共的依賴,這樣嵌套的話,同樣的依賴會復制很多次,會占據比較大的磁盤空間。

這個還不是最大的問題,致命問題是 windows 的文件路徑最長是 260 多個字符,這樣嵌套是會超過 windows 路徑的長度限制的。

當時 npm 還沒解決,社區就出來新的解決方案了,就是 yarn:

yarn

yarn 是怎么解決依賴重復很多次,嵌套路徑過長的問題的呢?

鋪平。所有的依賴不再一層層嵌套了,而是全部在同一層,這樣也就沒有依賴重復多次的問題了,也就沒有路徑過長的問題了。

我們把 node_modules 刪了,用 yarn 再重新安裝下,執行 yarn add express:

這時候 node_modules 就是這樣了:

圖片

全部鋪平在了一層,展開下面的包大部分是沒有二層 node_modules 的:

圖片

當然也有的包還是有 node_modules 的,比如這樣:

圖片

為什么還有嵌套呢?

因為一個包是可能有多個版本的,提升只能提升一個,所以后面再遇到相同包的不同版本,依然還是用嵌套的方式。

npm 后來升級到 3 之后,也是采用這種鋪平的方案了,和 yarn 很類似:

圖片

當然,yarn 還實現了 yarn.lock 來鎖定依賴版本的功能,不過這個 npm 也實現了。

yarn 和 npm 都采用了鋪平的方案,這種方案就沒有問題了么?

并不是,扁平化的方案也有相應的問題。

最主要的一個問題是幽靈依賴,也就是你明明沒有聲明在 dependencies 里的依賴,但在代碼里卻可以 require 進來。

這個也很容易理解,因為都鋪平了嘛,那依賴的依賴也是可以找到的。

但是這樣是有隱患的,因為沒有顯式依賴,萬一有一天別的包不依賴這個包了,那你的代碼也就不能跑了,因為你依賴這個包,但是現在不會被安裝了。

這就是幽靈依賴的問題。

而且還有一個問題,就是上面提到的依賴包有多個版本的時候,只會提升一個,那其余版本的包不還是復制了很多次么,依然有浪費磁盤空間的問題。

那社區有沒有解決這倆問題的思路呢?

當然有,這不是 pnpm 就出來了嘛。

那 pnpm 是怎么解決這倆問題的呢?

pnpm

回想下 npm3 和 yarn 為什么要做 node_modules 扁平化?不就是因為同樣的依賴會復制多次,并且路徑過長在 windows 下有問題么?

那如果不復制呢,比如通過 link。

首先介紹下 link,也就是軟硬連接,這是操作系統提供的機制,硬連接就是同一個文件的不同引用,而軟鏈接是新建一個文件,文件內容指向另一個路徑。當然,這倆鏈接使用起來是差不多的。

如果不復制文件,只在全局倉庫保存一份 npm 包的內容,其余的地方都 link 過去呢?

這樣不會有復制多次的磁盤空間浪費,而且也不會有路徑過長的問題。因為路徑過長的限制本質上是不能有太深的目錄層級,現在都是各個位置的目錄的 link,并不是同一個目錄,所以也不會有長度限制。

沒錯,pnpm 就是通過這種思路來實現的。

再把 node_modules 刪掉,然后用 pnpm 重新裝一遍,執行 pnpm install。

你會發現它打印了這樣一句話:

圖片

包是從全局 store 硬連接到虛擬 store 的,這里的虛擬 store 就是 node_modules/.pnpm。

我們打開 node_modules 看一下:

圖片

確實不是扁平化的了,依賴了 express,那 node_modules 下就只有 express,沒有幽靈依賴。

展開 .pnpm 看一下:

圖片

所有的依賴都在這里鋪平了,都是從全局 store 硬連接過來的,然后包和包之前的依賴關系是通過軟鏈接組織的。

比如 .pnpm 下的 expresss,這些都是軟鏈接,

圖片

也就是說,所有的依賴都是從全局 store 硬連接到了 node_modules/.pnpm 下,然后之間通過軟鏈接來相互依賴。

官方給了一張原理圖,配合著看一下就明白了:

圖片

這就是 pnpm 的實現原理。

那么回過頭來看一下,pnpm 為什么優秀呢?

首先,最大的優點是節省磁盤空間呀,一個包全局只保存一份,剩下的都是軟硬連接,這得節省多少磁盤空間呀。

其次就是快,因為通過鏈接的方式而不是復制,自然會快。

這也是它所標榜的優點:

圖片

相比 npm2 的優點就是不會進行同樣依賴的多次復制。

相比 yarn 和 npm3+ 呢,那就是沒有幽靈依賴,也不會有沒有被提升的依賴依然復制多份的問題。

這就已經足夠優秀了,對 yarn 和 npm 可以說是降維打擊。

總結

pnpm 最近經常會聽到,可以說是爆火。本文我們梳理了下它爆火的原因:

npm2 是通過嵌套的方式管理 node_modules 的,會有同樣的依賴復制多次的問題。

npm3+ 和 yarn 是通過鋪平的扁平化的方式來管理 node_modules,解決了嵌套方式的部分問題,但是引入了幽靈依賴的問題,并且同名的包只會提升一個版本的,其余的版本依然會復制多次。

pnpm 則是用了另一種方式,不再是復制了,而是都從全局 store 硬連接到 node_modules/.pnpm,然后之間通過軟鏈接來組織依賴關系。

這樣不但節省磁盤空間,也沒有幽靈依賴問題,安裝速度還快,從機制上來說完勝 npm 和 yarn。

pnpm 就是憑借這個對 npm 和 yarn 降維打擊的。

責任編輯:武曉燕 來源: 神光的編程秘籍
相關推薦

2022-09-16 22:23:35

pnpmCLI軟件

2025-07-07 06:21:46

2024-06-20 08:06:04

2024-01-31 21:54:22

NodeDenoMacOS

2022-02-28 10:22:08

前端管理工具

2025-03-25 08:50:00

2022-08-27 13:35:39

L4級自動駕駛輔助駕駛自動駕駛

2025-09-15 00:00:01

2021-11-29 12:11:09

npm包管理器工具

2022-02-21 09:58:31

包管理器npmyarn

2021-05-24 08:00:00

機器學習數據云計算

2022-02-25 14:19:56

依賴管理前端命令

2024-05-10 08:41:05

NPMYarn

2023-04-12 00:00:40

Node.jsMonoreponpm

2025-10-20 08:17:01

2020-07-23 10:51:29

NginxWebApache

2021-03-30 11:29:02

人工智能深度學習

2022-07-05 08:25:10

Reactyarn link

2017-09-11 09:20:14

機器學習無監督學習聚類

2021-02-25 07:24:35

pnpm包管理器前端
點贊
收藏

51CTO技術棧公眾號

亚洲a成v人在线观看| 韩国v欧美v亚洲v日本v| 欧美禁忌电影网| 免费成人在线观看视频| 国产一区二区三区网站| 亚洲精品20p| 最新日本在线观看| av爱爱亚洲一区| 日本一区二区三区四区视频| 手机看片国产日韩| 国产精品一区二区三区四区在线观看 | 激情久久综合| 亚洲九九九在线观看| 日本熟妇人妻中出| 天堂av最新在线| 国产在线精品一区在线观看麻豆| 欧美乱妇40p| 亚洲成a人片在线www| 亚洲h片在线看| 91麻豆高清视频| 成人黄色av播放免费| 日韩精品成人在线| 天天综合国产| 亚洲精品一区二区久| 一本一道久久a久久综合蜜桃| 欧美黑人猛交| 国产欧美一区二区精品忘忧草| 亚洲一区二区三区乱码aⅴ蜜桃女| 日本熟妇色xxxxx日本免费看| 精品国产一区二区三区| 精品99一区二区| 中文字幕亚洲欧洲| 天堂电影一区| 亚洲最大成人网4388xx| 亚洲v国产v在线观看| 全国男人的天堂网| 麻豆91精品91久久久的内涵| 久久久久久成人精品| 国产精品suv一区二区88| 黄色网一区二区| 欧美一区二区久久| 亚洲免费一级视频| 成年网站在线视频网站| 亚洲欧洲无码一区二区三区| 美脚丝袜一区二区三区在线观看| 99在线精品视频免费观看软件| 国产精品久久久久久模特| 中文字幕在线日韩| 少妇按摩一区二区三区| 国产福利资源一区| 欧美一区二区性放荡片| 手机在线成人免费视频| 国产污视频在线播放| 亚洲精品一卡二卡| 色综合电影网| 黄色av网站在线| 99国产精品视频免费观看| 99re视频在线| 一级黄色免费看| 理论片日本一区| 国产精品美女www| 香蕉影院在线观看| 午夜影院日韩| 91国内产香蕉| 中文字幕第15页| 亚洲视频www| 欧美在线国产精品| 日韩av在线播放观看| 亚洲承认在线| 欧美夜福利tv在线| 免费看日批视频| 久久久青草婷婷精品综合日韩| 2018日韩中文字幕| 欧美亚洲精品天堂| 亚洲自拍另类| 国产精品xxxxx| 懂色av中文字幕| 七七婷婷婷婷精品国产| 国产噜噜噜噜噜久久久久久久久| 中文字幕欧美在线观看| 久久99久久99精品免视看婷婷| 国产日韩中文字幕在线| 国产精品一品二区三区的使用体验| 国内精品免费**视频| 亚洲最大福利网| 亚洲成人精品女人久久久| av一二三不卡影片| 女女同性女同一区二区三区91| 免费毛片在线| 国产精品素人视频| 91黄色在线看| 精品91久久| 欧美亚洲自拍偷拍| 黄色片免费网址| youjizzjizz亚洲| 日韩久久精品电影| 五月婷婷婷婷婷| 伊人久久大香线蕉综合四虎小说 | 亚洲国产成人va在线观看天堂| av在线观看地址| 欧美艳星kaydenkross| 欧美日韩日日夜夜| 中文字幕1区2区| 久久成人高清| 久久国产加勒比精品无码| 成人免费看片98欧美| 日本不卡在线视频| 国产91精品一区二区绿帽| 亚洲人妻一区二区| 国产精品乱码一区二区三区软件| 日本a级片在线播放| 久草免费在线视频| 9191久久久久久久久久久| 无码国产69精品久久久久网站| 国产亚洲一区二区三区不卡| 久久久999成人| 国产又黄又猛又粗又爽| 黄网站免费久久| 久久青青草综合| 成人av黄色| 色综合中文综合网| 91亚洲一区二区| 亚洲人成网www| 欧美极品少妇xxxxⅹ免费视频 | 一本色道久久综合| 成人亚洲欧美一区二区三区| 嫩草精品影院| 一区二区三区四区在线免费观看 | 国产亚洲成人一区| 91精品久久久久久久久久久久久久 | 日韩女同一区二区三区| 欧美午夜久久| 成人精品视频99在线观看免费| 人妻视频一区二区三区| 中文字幕一区二区三| 欧美女人性生活视频| 91精品久久久久久综合五月天| 中文字幕久热精品视频在线| 西西44rtwww国产精品| 国产乱码精品一区二区三区五月婷| 欧洲一区二区日韩在线视频观看免费 | 日本三日本三级少妇三级66| 欧美色网在线| 精品视频中文字幕| 成人免费看片98| 国产乱子伦一区二区三区国色天香| 亚洲国产午夜伦理片大全在线观看网站| a级大胆欧美人体大胆666| 91精品国产91久久久久久最新毛片| 永久免费成人代码| 久久国产精品毛片| 狠狠久久综合婷婷不卡| 俺来也官网欧美久久精品| 日韩欧美亚洲另类制服综合在线| 999久久久国产| 日日夜夜精品视频天天综合网| 精品国产免费久久久久久尖叫| 日韩伦理av| 在线电影欧美成精品| 国产真人真事毛片视频| 日本午夜精品一区二区三区电影| 日韩久久精品一区二区三区| 免费观看一级欧美片| 日韩av在线免费观看一区| 久久久精品视频在线| 国产精品18久久久久久久久| 欧美日韩dvd| 免费一区二区三区在线视频| 大量国产精品视频| 成人黄色在线观看视频| 亚洲尤物视频在线| 亚洲精品一二三四| 午夜精品999| 国产欧美韩日| 亚洲永久av| 中文字幕在线看视频国产欧美在线看完整 | 色喇叭免费久久综合| 国产噜噜噜噜噜久久久久久久久| 欧美一区二区三区在线观看免费| 91精品国产综合久久久蜜臀图片| 特一级黄色录像| 豆国产96在线|亚洲| 91精品国产91久久久久麻豆 主演| 国产精品jk白丝蜜臀av小说| 97激碰免费视频| 久久av少妇| 欧美日韩国产一级片| 日韩成人毛片视频| 99久久综合精品| 天天操天天爱天天爽| 天天综合一区| 97人人做人人人难人人做| av资源中文在线| 亚洲人永久免费| 国产又粗又黄又爽的视频| 亚洲激情图片一区| 大地资源二中文在线影视观看| 日韩av在线发布| 4444在线观看| 日韩有码一区| 91中文字幕在线| 在线人成日本视频| 日韩视频免费在线观看| 免费av一级片| 欧美亚洲一区二区在线| 欧美日韩免费做爰视频| 91麻豆国产福利精品| 在线观看av免费观看| 99国产精品久久久久久久成人热| 色综合视频二区偷拍在线 | 91精品久久久久久久久青青| 久草在线视频网站| 中文字幕成人精品久久不卡| 亚洲av色香蕉一区二区三区| 91成人免费网站| 久久综合激情网| 国产精品伦理在线| 日韩免费高清一区二区| 精品在线观看免费| 波多野结衣家庭教师视频| 午夜免费一区| 欧美日韩国产免费一区二区三区 | 国产精品s色| 任我爽在线视频精品一| 国产精品色婷婷在线观看| 日韩免费av在线| 538在线视频| 欧美成人午夜激情| а天堂8中文最新版在线官网| 精品免费国产一区二区三区四区| 波多野结衣一区二区在线 | 国产亚洲精品久久久久久牛牛 | 日韩精品在线影院| 亚洲精品久久久蜜桃动漫 | 亚洲大尺度视频| 91精品综合久久久久久| 日韩精品一区二区三区国语自制| 亚洲天堂2016| 天堂av网手机版| 99精品久久只有精品| 国产精品久久久久久久99| 久久美女性网| 国产精品333| 亚洲天堂久久| 国产一级大片免费看| 在线成人激情| 中文字幕中文字幕一区三区| 国产调教一区二区三区| 97超碰最新| jizzyou欧美16| 茄子视频成人在线| 在线高清av| 91极品女神在线| 免费成人在线电影| 欧美亚洲一级片| 偷拍自拍在线看| 欧洲亚洲免费在线| 午夜影院一区| 日本精品一区二区三区在线| 欧美舌奴丨vk视频| 国产精品极品美女在线观看免费| 成人做爰视频www网站小优视频| 热99在线视频| 久久99久久99精品免观看软件| 欧美亚洲在线视频| 忘忧草在线www成人影院| 人九九综合九九宗合| 黑人精品一区| 国产精品视频在线观看| 成人国产综合| 91探花福利精品国产自产在线 | 国产色综合一区二区三区| 国产+成+人+亚洲欧洲在线| 好看的日韩精品视频在线| 日韩一区二区三区精品视频第3页| 91传媒视频在线观看| 成人在线啊v| 97av影视网在线观看| 国产一区二区三区亚洲| 久久99精品国产99久久| 欧美午夜精彩| 一区二区三区av| 欧美国产另类| 久草热视频在线观看| 国产欧美日本| 亚洲综合婷婷久久| 国产成人精品影视| 麻豆国产精品一区| 国产女人18毛片水真多成人如厕 | **欧美大码日韩| 国产亚洲成人av| 一本到不卡免费一区二区| 真实的国产乱xxxx在线91| 日韩一区二区三区免费观看 | 亚洲香蕉成人av网站在线观看 | 国产欧美啪啪| 日韩亚洲欧美精品| 午夜电影亚洲| 成人3d动漫一区二区三区| 久久超级碰视频| 无码人妻一区二区三区精品视频| 91毛片在线观看| 亚洲AV无码成人精品区明星换面| 亚洲欧美日韩国产另类专区| 日本在线小视频| 欧美三级电影精品| 老牛影视av牛牛影视av| 中日韩午夜理伦电影免费| 日本资源在线| 欧美一级大片视频| 激情不卡一区二区三区视频在线| 久久久福利视频| 中文字幕日韩欧美精品高清在线| 日韩av片在线看| 国产成人在线观看免费网站| a天堂中文字幕| 亚洲大型综合色站| 国产美女裸体无遮挡免费视频| 日韩av网站大全| 国产精品va在线观看视色 | 国产这里只有精品| 亚洲色图丝袜| 国产精品又粗又长| 国产一区二区三区av电影 | 国产精品久久久久aaaa樱花 | 欧美日韩中字| 免费国产a级片| 国产精品一区二区三区网站| 日本爱爱爱视频| 精品久久久一区二区| aaa一区二区三区| 亚洲人成网站色ww在线| jizz一区二区三区| 国产精品一区久久久| 欧美男gay| 日韩国产欧美亚洲| 成人av一区二区三区| 久久久久久久久久网站| 欧美精品一二三| 成人综合影院| 日本欧美精品在线| 午夜精品福利影院| 午夜免费福利小电影| 国产成人精品免费一区二区| 国产喷水在线观看| 欧美日韩视频专区在线播放| 国产永久av在线| 日本久久久久久久| 九九亚洲视频| 成人av一级片| 懂色av一区二区夜夜嗨| 暗呦丨小u女国产精品| 欧美高清视频不卡网| 韩国三级av在线免费观看| 秋霞av国产精品一区| 深爱激情综合网| 青青在线免费观看视频| 久久精品亚洲乱码伦伦中文 | 国产精品国产三级国产在线观看 | 欧美日韩精品免费观看视完整| 国产精品亚洲综合| 日韩视频三区| 国产精品三级在线观看无码| 色婷婷综合久久| 国产中文字幕在线| 国产精品久久久久久久久粉嫩av| 国产欧美日韩在线观看视频| 日韩免费毛片视频| 国产日韩欧美精品综合| 国产精品嫩草影院桃色| 久久久久久久97| 久久av影视| 日本国产一级片| 亚洲高清视频在线| 成人在线二区| 国产91社区| 视频一区在线播放| 亚洲成人生活片| 亚洲女人天堂成人av在线| 57pao成人永久免费| 国产3p露脸普通话对白| 中文字幕第一区| 亚洲精品.www| 国产精品电影一区| 亚洲天堂男人| jizzjizzjizz国产| 日韩电影第一页| 国产不卡精品在线| 欧美 国产 日本| 亚洲丝袜自拍清纯另类| 熟妇高潮一区二区高潮| 国产日韩欧美在线| 亚洲国内自拍| 天海翼在线视频| 亚洲女在线观看| 2021年精品国产福利在线| 免费激情视频在线观看| 亚洲福利视频三区| 欧美日韩在线资源| 欧美久久久久久久|