精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

黄网站欧美内射| 国产精品国色综合久久| 亚洲精品视频一二三| 精品一区二三区| jizz久久精品永久免费| 亚洲精品美腿丝袜| 久久久久久久有限公司| 中文字幕免费观看视频| 要久久电视剧全集免费| 欧美自拍偷拍午夜视频| 日韩精品一区二区三区四| 在线观看亚洲一区二区| 免费看日本一区二区| 欧美日韩精品三区| 日韩欧美一区三区| 午夜激情视频在线观看| 成a人片亚洲日本久久| 国产精品99一区| 精品无码人妻一区二区三| 欧美日韩在线二区| 精品国产免费一区二区三区四区| 我看黄色一级片| 九色porny视频在线观看| 中文字幕不卡在线播放| 好吊色欧美一区二区三区| 亚洲在线精品视频| 久久天堂精品| 97色伦亚洲国产| 欧美成人黄色网| 97色婷婷成人综合在线观看| 国产精品国产三级国产| 国产专区一区二区| 成人在线免费看视频| 午夜激情久久| 亚洲欧洲在线视频| 黄色av网址在线观看| 精品国产一区二区三区性色av | 图片区小说区国产精品视频| 一本色道久久综合亚洲精品婷婷| 免费看男男www网站入口在线| 国产v综合v亚洲欧| 3d动漫啪啪精品一区二区免费| 糖心vlog精品一区二区| 久久亚洲不卡| 欧美做受高潮1| 国产精品久久久久久99| 精品成人免费| 欧美黄色性视频| 久久丫精品久久丫| 欧美日韩一区二区高清| 亚洲电影免费观看高清| 97超碰免费在线观看| av人人综合网| 一卡二卡三卡日韩欧美| 波多野结衣与黑人| 牛牛在线精品视频| 一级精品视频在线观看宜春院| 一区二区三区精品国产| 男人影院在线观看| 亚洲男同性恋视频| 肉大捧一出免费观看网站在线播放 | 美女视频一区二区| 国产精品永久免费视频| 最近中文字幕在线观看视频| 日韩电影免费在线观看网站| 国产精品青青在线观看爽香蕉| 国产精品成人无码| 捆绑调教一区二区三区| 91在线观看免费网站| 99热这里只有精品在线| 风流少妇一区二区| 精品无人区一区二区三区| 视频国产一区二区三区| 理论电影国产精品| 91在线视频九色| 亚洲国产日韩在线观看| 成人av在线网站| 精品免费日产一区一区三区免费| 天天操天天插天天射| 久久久精品免费观看| 亚洲一区二区免费视频软件合集 | 成人在线观看a| 巨大黑人极品videos精品| 欧美日本乱大交xxxxx| 一本之道在线视频| 神马久久av| 国产亚洲精品久久久久久| 午夜影院免费版| 丁香五月缴情综合网| 日韩国产精品视频| 永久免费看片直接| 国产精品一二| 91精品在线观| 欧美少妇另类| 一区二区三区中文免费| 国模无码视频一区二区三区| 成人一区视频| 亚洲成色777777女色窝| 大胸美女被爆操| 在线精品福利| 国产在线观看一区二区三区| 内射后入在线观看一区| 国产精品人成在线观看免费 | 永久免费未视频| 99精品视频免费观看视频| 国产精品免费看久久久香蕉| 亚洲精品久久久久久无码色欲四季 | 久久er99精品| 久久久久久九九九九| 麻豆影视在线观看_| 高跟丝袜欧美一区| 丝袜人妻一区二区三区| 国产极品嫩模在线观看91精品| 日韩欧美国产不卡| 青青草自拍偷拍| 99在线精品视频在线观看 | 4438全国亚洲精品观看视频| 亚洲日本aⅴ片在线观看香蕉| 五月婷婷一区二区| 美女视频黄 久久| 久久99精品久久久久久秒播放器| 国产在线激情| 亚洲欧美综合色| 欧美日韩中文在线视频| 成人另类视频| 欧美精品在线免费播放| 亚洲中文一区二区三区| 久久久久久久久久久久久夜| 日韩网站在线免费观看| 精品国产亚洲一区二区三区在线 | 欧美极品少妇无套实战| 欧美极品在线| 国产亚洲福利一区| 9i精品福利一区二区三区| 99久久综合国产精品| 青青草综合在线| 国产精品99久久免费| 中日韩美女免费视频网站在线观看| 国产午夜免费视频| 亚洲免费精品| 成人自拍网站| 免费电影网站在线视频观看福利| 国产中文字幕在线看| 免费视频一区二区三区在线观看| 亚洲精品女av网站| 日韩中文字幕观看| 亚洲精品久久嫩草网站秘色| 国产欧美一区二| 91欧美国产| 国产精品一区久久久| 9191在线观看| 欧美午夜精品一区二区三区| 蜜桃久久精品成人无码av| 久久久一二三| 日韩三级在线播放| 久久精品 人人爱| 自拍偷拍亚洲区| 国产伦精品一区二区三区四区| 中文字幕免费一区| 中文字幕66页| 重囗味另类老妇506070| 亚洲自拍偷拍一区| 欧美24videosex性欧美| 亚洲成人av片在线观看| 日韩人妻无码一区二区三区99| 91免费国产视频网站| 无码精品a∨在线观看中文| 青青视频一区二区| 国产精品福利网站| 高清免费电影在线观看| 欧美成人精品3d动漫h| 日本少妇裸体做爰| 久久久国产精华| 小明看看成人免费视频| 国产一区二区中文| 欧美国产视频在线观看| 免费成人毛片| 欧美精品成人91久久久久久久| 性xxxx视频| 欧美日韩免费一区二区三区| 青青草免费av| 26uuu另类欧美| 亚洲小视频网站| 在线成人黄色| 日韩欧美一区二区视频在线播放| 老司机亚洲精品一区二区| 国色天香2019中文字幕在线观看| 日本大片在线观看| 国产一区二区伦理片| 亚洲午夜激情免费视频| 久久黄色精品视频| 国产精品入口麻豆九色| 不许穿内裤随时挨c调教h苏绵| 亚洲欧美日韩精品一区二区| 三年中文高清在线观看第6集 | 欧美另类久久久品| 国产午夜精品无码| 国产精品欧美一级免费| 亚洲av成人片无码| 毛片av中文字幕一区二区| a级免费在线观看| 成人亚洲综合| 久久久久久久91| 大乳在线免费观看| 欧美成人女星排名| 伊人网站在线观看| 香蕉加勒比综合久久| 日本二区三区视频| 久久色.com| 在线中文字日产幕| 精久久久久久久久久久| 久久久久久久激情| 悠悠资源网久久精品| 最新国产精品久久| 精品国产午夜| 精品日本一区二区| 日韩中文在线| 欧美激情一区二区三区在线视频观看| 亚洲三区在线观看无套内射| 91精品国产色综合久久| 波多野结衣高清在线| 亚洲h在线观看| 农村黄色一级片| 亚洲综合影视| 在线免费观看日本欧美| 久久亚洲国产成人精品性色| 国产精品传媒视频| 亚洲精品乱码久久久久久久久久久久| 大尺度一区二区| 久久综合桃花网| 精品在线亚洲视频| xxx国产在线观看| 欧美aaaaa成人免费观看视频| 国产99久久精品一区二区永久免费 | 欧美oldwomenvideos| 欧美人与物videos另类| 美腿丝袜亚洲图片| 国精产品一区二区| 97品白浆高清久久久久久| 3d动漫精品啪啪一区二区三区免费| 国产一区精品福利| 国产精品专区一| 久久精品资源| 成人性生交大片免费观看嘿嘿视频| av激情成人网| 国产精品老女人精品视频| 91看片一区| 国产成人精品午夜| 日韩av电影资源网| 国产精品日韩av| 图片一区二区| 96精品久久久久中文字幕| 99久热在线精品视频观看| 国产在线999| 精品欧美视频| 成人毛片网站| 欧美freesex8一10精品| 久久av一区二区| 国产精品嫩模av在线| 亚洲v国产v在线观看| 日韩电影免费网站| 手机成人av在线| 你懂的国产精品| 福利视频一二区| 久久高清一区| 亚洲v国产v在线观看| 久久资源中文字幕| 黄黄视频在线观看| 亚洲高清激情| www黄色av| 免播放器亚洲一区| 欧美激情亚洲综合一区| 岛国毛片在线观看| 亚洲成a人v欧美综合天堂下载 | 色爱综合区网| 韩国三级日本三级少妇99| 欧美男男tv网站在线播放| 国产成人精品在线播放| 婷婷成人av| 国产日韩精品久久| 男男gay无套免费视频欧美| 亚洲一区二区三区午夜| 欧美三级不卡| 久久久久免费精品| 国内精品视频666| 国产二级一片内射视频播放| 久久精品夜色噜噜亚洲a∨| 娇小11一12╳yⅹ╳毛片| 一区二区三区在线不卡| 日本中文字幕在线| 91精品免费观看| 亚洲av成人无码久久精品老人| 中文字幕精品www乱入免费视频| 二区在线播放| 日韩av电影免费观看高清| 欧美一级片网址| 久久青青草综合| 欧美有码视频| 国产精品少妇在线视频| 国产成人精品一区二区三区四区| 国产伦精品一区二区三区妓女| 亚洲欧洲av色图| 欧美激情黑白配| 日韩欧美视频在线| 成人在线观看网站| 午夜精品一区二区三区在线视 | 国精品人伦一区二区三区蜜桃| 国产精品九九| 手机av在线网| 久久精品人人做人人综合| 国产在线拍揄自揄拍| 欧美美女视频在线观看| 精品电影在线| 久久久免费观看视频| 欧美大片网站| 日韩欧美精品在线不卡| 亚洲另类黄色| 免费不卡av网站| 国产精品人成在线观看免费| 久久国产视频精品| 精品美女一区二区三区| 日本不卡不卡| 国产精品69av| 色婷婷狠狠五月综合天色拍| 国产高清不卡无码视频| 久久国内精品自在自线400部| 无码h肉动漫在线观看| 亚洲国产aⅴ成人精品无吗| 国产裸体永久免费无遮挡| 中文字幕精品国产| 免费污视频在线一区| 欧洲一区二区日韩在线视频观看免费 | 黄色精品在线看| 亚洲不卡免费视频| 色综合久综合久久综合久鬼88 | 亚洲成av人影院在线观看| 黄色网页在线看| 国产在线视频91| 久久精品国产99久久| 亚洲一级免费观看| 中日韩av电影| 中文字幕免费在线看| 色天天综合狠狠色| 亚洲第一图区| 91午夜在线播放| 欧美一区不卡| 免费黄色在线播放| 一区二区三区精品在线| 精品人妻一区二区三区含羞草| 久久久国产视频91| 久久久久久亚洲精品美女| 99精品一级欧美片免费播放| 久久精品国产一区二区三区免费看| 激情五月激情综合| 在线不卡中文字幕播放| 韩国av网站在线| 欧美激情综合五月色丁香小说| 国产三区在线视频| 99久久99久久久精品齐齐| 国产成人在线观看网站| 日韩精品中文字幕在线观看| 午夜激情电影在线播放| 成人在线播放av| 中文字幕午夜精品一区二区三区 | 欧美日韩一二三四区| 国产视频一区在线| av在线一区不卡| 手机看片日韩国产| 懂色av一区二区三区蜜臀 | 18videosex性欧美麻豆| 97se亚洲综合| 99国产精品久久久久久久| 中文字幕一区二区三区人妻电影| 欧美亚洲综合一区| 18加网站在线| 久久综合一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 秋霞欧美一区二区三区视频免费| 日韩欧美在线不卡| 亚洲福利影院| 一区二区三区偷拍| 高清免费成人av| www.久久精品视频| 久久精品亚洲精品| 欧美精品中文字幕亚洲专区| 日本888xxxx| 亚洲最新视频在线观看| 你懂的在线看| 91在线观看免费高清| 国产精品一级| 久久免费看少妇高潮v片特黄| 亚洲精品久久久久中文字幕二区| 日韩毛片一区| 免费av手机在线观看| 欧美国产亚洲另类动漫| 日本xxxx人| 国产这里只有精品| 免播放器亚洲| 久久精品黄色片| 尤物精品国产第一福利三区|