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

Pnpm:包管理的新星,如何顛覆 Npm 和 Yarn

開發 前端
為了更好地理解 pnpm 的優勢,我們從包管理工具的歷史開始探索,從 npm2 開始的各個階段。我們將看到 pnpm 如何通過技術創新解決歷史遺留問題,并極大地提高性能和效率。接下來,深入了解 pnpm 的核心機制以及它如何改變開發者處理依賴管理的方式。

在探索現代 JavaScript 生態系統時,我們常常會遇到新興技術的快速迭代和改進。其中,包管理工具的發展尤為重要,因為它們直接影響開發效率和項目性能。最近,pnpm 作為一種新的包管理工具引起了廣泛關注。它不僅挑戰了傳統工具如 npm 和 Yarn,還提供了一些獨特的優勢,使其在許多方面超越了前輩。

為了更好地理解 pnpm 的優勢,我們從包管理工具的歷史開始探索,從 npm2 開始的各個階段。我們將看到 pnpm 如何通過技術創新解決歷史遺留問題,并極大地提高性能和效率。接下來,深入了解 pnpm 的核心機制以及它如何改變開發者處理依賴管理的方式。

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 都采用了扁平化解決方案。這種方法沒有問題嗎?

不完全是,扁平化解決方案也有自己的問題。

主要問題是幽靈依賴,這意味著在代碼中可以引入未在依賴項部分聲明的依賴項。

這很容易理解,因為一切都是扁平化的,所以可以找到依賴項的依賴項。

然而,這帶來了風險,因為沒有明確的依賴聲明,如果有一天另一個包不再依賴于那個包,你的代碼將無法運行,因為依賴于它,但現在沒有安裝。

這就是幽靈依賴的問題。

另一個問題是多個版本的依賴項,如上所述。只有一個版本會被提升,而其他版本則會重復多次,導致磁盤空間浪費。

社區有解決這兩個問題的想法嗎?

當然有!這就是為什么引入了 pnpm。

pnpm

回顧一下,為什么 npm3 和 yarn 扁平化 node_modules?不就是因為相同的依賴項會被多次重復,并且長路徑可能會在 Windows 上引發問題嗎?

如果我們不重復它們,而是使用鏈接呢?

首先,介紹鏈接。它是操作系統提供的軟鏈接和硬鏈接。硬鏈接是同一個文件的不同引用,而符號鏈接會創建一個新文件,其內容指向另一個路徑。當然,這兩種鏈接的使用方式是類似的。

如果不復制文件,而是將 npm 包的唯一副本存儲在全局倉庫中,并將其他位置鏈接到它呢?

這樣就不會因多次復制而浪費磁盤空間,也不會有路徑過長的問題。路徑長度的限制本質上意味著不應該有太深的目錄層級;現在所有位置的目錄是鏈接在一起的,而不是在同一個目錄中,因此沒有長度限制。

是的,pnpm 通過這種方法實現了這一點。

再次刪除 node_modules,然后使用 pnpm 通過運行 pnpm install 重新安裝。

你會注意到它打印出這樣一句話:

軟件包從全局存儲硬鏈接到虛擬存儲,這里的虛擬存儲是 node_modules/.pnpm。

我們打開 node_modules 看一看。

確實不是扁平的,依賴 express,所以在 node_modules 下只有 express,沒有任何幽靈依賴。

展開 .pnpm 看看:

所有依賴項都在這里解決,全部從全局倉庫直接鏈接過來,并通過符號鏈接組織包之間的依賴關系。

例如,.pnpm 下的 express,都是符號鏈接。

換句話說,所有依賴項都是從全局倉庫硬鏈接到 node_modules/.pnpm,然后它們通過符號鏈接相互依賴。

官方提供了一個示意圖,結合起來看很清楚:

這就是 pnpm 的實現原理。

pnpm 的優越性

首先,最大的優勢是節省磁盤空間。包只在全局保存一份,其余的都是符號鏈接或硬鏈接。這節省了大量磁盤空間。

其次,它很快,因為它使用鏈接而不是復制,這自然使它更快。

這些也是它所宣稱的優勢:

相比 npm2,優勢在于不會多次重復相同的依賴項。

相比 yarn 和 npm3+,沒有幽靈依賴,也沒有未提升依賴項的重復問題。

這已經足夠優秀,可以說是對 yarn 和 npm 的一次打擊。

結語

最近,pnpm 頻繁被提及,可以說是當下的趨勢。在本文中,我們總結了其受歡迎的原因:

npm2 以嵌套方式管理 node_modules,導致多次重復依賴項的問題。

npm3+ 和 yarn 通過扁平化方式管理 node_modules,解決了嵌套方式的一些問題,但引入了幽靈依賴的問題。此外,同名包只有一個版本被提升,而其他版本仍會重復。

pnpm 通過不復制文件,而是從全局倉庫硬鏈接到 node_modules/.pnpm,并通過符號鏈接組織依賴關系,解決了這些問題。

這不僅節省了磁盤空間,消除了幽靈依賴問題,還加快了安裝速度。從機械角度來看,pnpm 超越了 npm 和 yarn。

通過這種對 npm 和 yarn 的創新方法,pnpm 正在通過簡化依賴管理的方式產生影響。

責任編輯:姜華 來源: 大遷世界
相關推薦

2022-02-28 10:22:08

前端管理工具

2022-02-21 09:58:31

包管理器npmyarn

2023-04-12 00:00:40

Node.jsMonoreponpm

2021-11-29 12:11:09

npm包管理器工具

2022-09-16 22:23:35

pnpmCLI軟件

2022-02-25 14:19:56

依賴管理前端命令

2025-07-07 06:21:46

2022-08-03 00:04:29

pnpmyarnnpm

2021-02-25 07:24:35

pnpm包管理器前端

2025-03-25 08:50:00

2025-09-15 00:00:01

2024-05-10 08:41:05

NPMYarn

2025-10-20 08:17:01

2022-05-09 19:19:36

Pnpm管理工具

2022-05-26 08:01:44

Pnpm包管理器磁盤

2020-03-17 10:18:27

GitHub代碼開發者

2021-11-11 11:13:20

js Npm基礎

2025-03-24 00:00:15

2024-12-04 13:54:19

pnpm存儲項目

2022-02-14 11:25:26

區塊鏈技術加密貨幣
點贊
收藏

51CTO技術棧公眾號

成人一级视频在线观看| 国产精品羞羞答答在线观看| 亚洲精品写真福利| www.久久艹| 亚洲天堂日韩av| 99久久免费精品国产72精品九九| 亚洲电影一级黄| 精品视频第一区| 国模私拍一区二区| 欧美国产激情| 日韩高清欧美高清| 日本美女视频一区| 欧美亚洲系列| 日本一区二区视频在线| 亚洲一区二区在线播放| 日韩免费视频一区二区视频在线观看| 欧美影院三区| 亚洲精品在线免费播放| 国产精品入口免费软件| 91精品久久久| 久久精品视频一区二区三区| 成人在线视频网| 欧美国产成人精品一区二区三区| 久久久久久久久久久久久久久久久| 日韩在线免费| 一二三区精品视频| 色一情一区二区三区四区| 精品久久无码中文字幕| 丝袜美腿亚洲一区二区图片| 欧美高清性猛交| 日本美女bbw| 久久aimee| 欧美高清你懂得| 成人在线观看黄| 日本在线视频网址| 国产精品乱码人人做人人爱| 久久riav二区三区| 国产黄色av网站| 免费久久精品视频| 57pao成人永久免费视频| 男人操女人的视频网站| 台湾佬综合网| 日韩欧美高清一区| 免费看污污网站| 丝袜老师在线| 亚洲第一福利视频在线| 日韩人妻一区二区三区蜜桃视频| 超碰国产在线观看| 久久久久久99久久久精品网站| 99久久精品无码一区二区毛片| 羞羞色院91蜜桃| 亚洲免费影视| 91精品国产电影| 免费人成年激情视频在线观看| 99久久精品费精品国产| 中文字幕日韩在线观看| 免费毛片视频网站| 少妇精品久久久一区二区| 成人福利视频在线看| 欧美成va人片在线观看| 91专区在线观看| 成年人黄视频在线观看| 一区在线播放视频| 中文字幕中文字幕在线中一区高清 | 亚洲人成网站在线观看播放 | 日韩av网址在线观看| 久久发布国产伦子伦精品| 国产一区一区| 欧美一区二区人人喊爽| 亚洲在线观看网站| www.久久.com| 欧美专区日韩专区| 蜜臀av午夜一区二区三区| 欧美理论影院| 在线视频你懂得一区| 91网址在线播放| 成人日韩在线观看| 欧美剧在线免费观看网站| www.国产福利| 999精品视频在这里| 日韩女优电影在线观看| 亚洲乱妇老熟女爽到高潮的片 | 丁香婷婷在线观看| 国产精品毛片大码女人| 日本三级福利片| 亚洲卡一卡二| 婷婷国产在线综合| 国产精品-区区久久久狼 | 欧美丝袜第一区| 无码人妻丰满熟妇区96| 亚洲一区二区三区四区| 欧美精品日韩精品| 少妇精品无码一区二区| 欧美精品中文字幕亚洲专区| 亚洲女同精品视频| 可以免费看av的网址| 欧美午夜久久| 国产成人免费91av在线| 91av久久久| 成人免费视频视频在线观看免费| 久久99精品久久久久久三级| 触手亚洲一区二区三区| 亚洲色图在线视频| 免费看av软件| 97蜜桃久久| 欧美日韩综合色| 亚洲欧美激情一区二区三区| 都市激情亚洲欧美| 中文字幕在线视频日韩| 精品亚洲永久免费| 青娱乐精品在线视频| 不卡一区二区三区视频| 国产小视频福利在线| 国产精品久久夜| 一区二区不卡在线| 人在线成免费视频| 在线不卡中文字幕| 欲求不满的岳中文字幕| 欧美成人激情| 日韩av手机在线看| www.色播.com| 中文字幕av不卡| 激情五月六月婷婷| 成人在线免费av| 亚洲黄色在线观看| 青草影院在线观看| 日韩精品一级中文字幕精品视频免费观看 | 午夜a成v人精品| 亚洲午夜激情影院| 奇米777国产一区国产二区| 精品视频在线播放免| 欧美精品成人久久| 久色婷婷小香蕉久久| 免费国产一区二区| 91超碰在线免费| 欧美一区二区三区播放老司机| 亚洲精品久久久久久久久久久| 天天插天天操天天射| 欧洲亚洲一区二区三区| 色综合久久久888| 中文字幕 自拍偷拍| 91在线porny国产在线看| 2022中文字幕| 精品国产一区二区三区2021| 国产午夜精品视频| 中文字幕av免费在线观看| 久久99热国产| 中文字幕一区综合| 日韩在线伦理| 亚洲成人久久网| 日韩女优一区二区| 国产一区二区毛片| 玖玖精品在线视频| 中文字幕综合| 日韩精品在线视频美女| 可以在线观看av的网站| 成人午夜激情视频| 大陆av在线播放| 99国产精品免费网站| 免费不卡欧美自拍视频| 一级日韩一级欧美| 亚洲日本一区二区| 波多野结衣网页| 51精产品一区一区三区| 成人在线观看视频网站| av大片在线| 精品少妇一区二区三区 | 中文字幕一区二区在线视频| 国产女同性恋一区二区| 另类小说第一页| 自拍偷拍精品| 欧美一级黑人aaaaaaa做受| 亚州男人的天堂| 一本大道综合伊人精品热热| 国产成人无码精品久久二区三| 免费一区视频| 亚洲国产精品一区二区第四页av| 看片一区二区| 欧美成人性生活| 后入内射欧美99二区视频| 五月天久久比比资源色| 男人操女人动态图| 美洲天堂一区二卡三卡四卡视频| 亚洲一区二区三区色| 国产精品一级在线观看| 欧美极品美女视频网站在线观看免费| 亚洲精品无码专区| 精品日本高清在线播放| 俄罗斯黄色录像| 国产亚洲福利| 日本一区视频在线观看免费| 91麻豆精品国产91久久久更新资源速度超快| 久久精品国产2020观看福利| 亚洲高清精品视频| 欧美视频二区36p| 林心如三级全黄裸体| 欧美aⅴ一区二区三区视频| 青青草影院在线观看| 午夜久久av| 青草青草久热精品视频在线网站| 在线国产91| 亚洲国产精品网站| 亚洲视屏在线观看| 亚洲人成网站在线| 国产精品300页| 六月婷婷色综合| 免费国产a级片| 久久精品国产亚洲夜色av网站 | 国产精品88久久久久久妇女| 露出调教综合另类| 欧洲成人在线视频| av在线下载| 亚洲一区第一页| 国产自产一区二区| 欧美三级免费观看| 麻豆成人在线视频| 国产精品色呦呦| 玖玖爱在线精品视频| 黑人巨大精品欧美一区| 红桃av在线播放| 欧美/亚洲一区| 亚欧精品在线| 免费看成人人体视频| 亚洲a级在线播放观看| 欧美韩国亚洲| 国内精品一区二区三区四区| 好了av在线| 国产一区二区三区视频| 成人毛片在线免费观看| 欧美日韩一区二区在线观看视频| 亚洲精品午夜国产va久久成人| 国产精品无遮挡| 精品人妻无码一区二区三区换脸| 岛国精品在线播放| 日韩欧美色视频| 免费成人美女在线观看| 日本在线视频www| 国产视频一区在线观看一区免费| 欧美在线观看视频免费| 欧美一区2区| 成人免费av资源| 人人妻人人添人人爽欧美一区| av资源久久| 欧洲在线视频一区| 欧美激情15p| 国产精品91久久久久久| 亚洲风情在线资源| 97人人爽人人喊人人模波多 | 97se亚洲国产综合自在线| 少妇性l交大片7724com| 美日韩一区二区| 91极品视频在线观看| 日韩国产精品91| 九九九在线观看视频| 日韩av成人高清| 天天爽天天爽夜夜爽| 日韩电影在线一区二区三区| 麻豆av免费在线| 久久综合图片| 男女日批视频在线观看| 在线视频观看日韩| 黄色www网站| 国产精品久久久久久久久久妞妞| 伊人成色综合网| 在线日韩中文| 日本中文字幕片| 视频一区国产视频| 一区二区在线播放视频| 蜜桃av一区二区在线观看| 亚洲成人av免费看| 琪琪一区二区三区| 国产无色aaa| 国产精品一二一区| 日本国产在线视频| 91一区二区三区在线观看| 在线精品一区二区三区| 久久亚洲欧美国产精品乐播| 人妻aⅴ无码一区二区三区| 中文字幕av免费专区久久| 免费一级做a爰片久久毛片潮| 不卡在线观看av| 99久久久久久久久久| 中文字幕乱码日本亚洲一区二区| 三级黄色免费观看| 亚洲视频免费在线| 日本一区二区网站| 在线亚洲精品福利网址导航| 伊人影院中文字幕| 精品粉嫩aⅴ一区二区三区四区| 四虎在线免费看| 日韩中文字幕在线免费观看| 最新国产在线拍揄自揄视频| 96精品视频在线| 24小时免费看片在线观看| 国产精品老女人精品视频| 久久视频免费| 老牛影视免费一区二区| 久久中文视频| 好吊妞无缓冲视频观看| 久久精品国产免费| 青青草视频网站| 中文字幕欧美国产| 老湿机69福利| 日本道免费精品一区二区三区| 国产精品久久久久毛片| 日韩av在线免费观看一区| 麻豆网站在线| 欧美在线视频免费播放| 懂色av色香蕉一区二区蜜桃| 国产免费一区二区三区在线观看 | 在线欧美视频| 艹b视频在线观看| 国产iv一区二区三区| 国产主播av在线| 欧美日韩国产精品一区| 99久久精品国产色欲| 亚洲美女激情视频| 日本1级在线| 日韩小视频在线| 国产精品一区hongkong| 国产日韩欧美在线视频观看| 成人18夜夜网深夜福利网| 亚洲精品一区二区三| 欧美 日韩 国产 一区| 黑森林福利视频导航| 白白色 亚洲乱淫| 国产成人免费在线观看视频| 欧美午夜激情在线| www.久久精品.com| 久久精品国产99国产精品澳门 | 凹凸成人精品亚洲精品密奴| 国产综合中文字幕| 国产麻豆精品视频| 永久免费av无码网站性色av| 天天操天天干天天综合网| wwwav网站| 欧美成人午夜视频| 国产精品成人国产| 欧美lavv| 国产精品一二| 国产精品女人久久久| 成人影院天天5g天天爽无毒影院| 免费在线成人av| 国内一区二区三区| 日韩一区二区三区不卡视频| 91伊人久久大香线蕉| 国产精品111| 日韩亚洲欧美在线| 日韩av毛片| 亚洲xxx大片| 久久精品久久久| 午夜剧场在线免费观看| 久久久久国产免费免费| 久草视频在线观| 亚洲激情电影中文字幕| 懂色av一区| 亚洲综合小说区| 在线日本成人| 国产一级伦理片| 亚洲图色一区二区三区| 狠狠躁夜夜躁人人躁婷婷91| 久久www免费人成精品| 国产高潮在线| 97神马电影| 亚洲网站视频| 亚洲图片欧美另类| 欧美午夜精品久久久久久久| 美女欧美视频在线观看免费 | 国产精品chinese在线观看| 黄色污污在线观看| 国产99久久久国产精品潘金| 精品肉丝脚一区二区三区| 欧美精品日韩一区| 波多野结衣中文在线| 国产日韩精品推荐| 国产欧美精品| 黄色免费一级视频| 日韩精品一区在线| 超碰成人av| 日本一区高清在线视频| 人人超碰91尤物精品国产| 国产大片免费看| 精品久久久网站| 欧美日韩电影免费看| 正在播放精油久久| 波多野结衣91| 久久国产香蕉视频| 久久国产精品亚洲| 亚洲国产欧美国产第一区| 国产网站免费在线观看| 欧美激情一区在线| 精品久久在线观看| 国产成人啪精品视频免费网| 久久美女视频| 激情av中文字幕| 日本道免费精品一区二区三区| a毛片在线播放| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 视频一区二区中文字幕| 青青操在线视频观看|