国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

聊聊前端包管理器對比Npm、Yarn和Pnpm

開發 前端
本文將從前端包管理器的發展開始說起,然后對比npm、yarn和pnpm。

前言

本文將從前端包管理器的發展開始說起,然后對比npm、yarn和pnpm。

沒有包管理器

依賴(dependency)是別人為了解決一些問題而寫好的代碼,即我們常說的第三方包或三方庫。

一個項目或多或少的會有一些依賴,而你安裝的依賴又可能有它自己的依賴。

比如,你需要寫一個base64編解碼的功能,你可以自己寫,但為什么要自己造輪子呢?大多數情況下,一個可靠的第三方依賴經過多方測試,兼容性和健壯性會比你自己寫的更好。

項目中的依賴,可以是一個完整的庫或者框架,比如react或vue;可以是一個很小的功能,比如日期格式化;也可以是一個命令行工具,比如eslint。

如果沒有現代化的構建工具,即包管理器,你需要用<script>標簽來引入依賴。

此外,如果你發現了一個比當前使用的依賴更好的庫,或者你使用的依賴發布了更新,而你想用最新版本,在一個大的項目中,這些版本管理、依賴升級將是讓人頭疼的問題。

于是包管理器誕生了,用來管理項目的依賴。

它提供方法給你安裝依賴(即安裝一個包),管理包的存儲位置,而且你可以發布自己寫的包。

npm v1-v2

初代npm(Node.js Package Manager)隨著Node.js的發布出現了。

它的文件結構是嵌套的:

這會導致3個問題:

1、node_modules體積過大(大量重復的包被安裝)

2、node_modules嵌套層級過深(會導致文件路徑過長的問題)

3、模塊實例不能共享

yarn & npm v3

這個版本yarn和npm v3帶來了扁平化依賴管理:

扁平化處理時,比如安裝A,A依賴B和C,C依賴D和E,就把A~E全部放到node_modules目錄下,從而解決上個版本中node_modules嵌套層級過深的問題。

在install安裝時,會不停的往上級node_modules中尋找,如果找到同樣的包,就不再重復安裝,從而解決了大量包被重復安裝的問題。

但是扁平化帶來了新的問題:

1、依賴結構的不確定性

2、扁平化算法本身復雜性很高,耗時較長

3、項目中仍然可以非法訪問沒有聲明過依賴的包

對于問題1,比如B和C都依賴了F,但是依賴的F版本不一樣:

依賴結構的不確定性表現是扁平化的結果不確定,以下2種情況都有可能,取決于package.json中B和C的位置。

于是出現yarn.lock(npm5才有package-lock.json),來保證install后產生確定的依賴結構。但這并不能完全解決問題,node_modules中依然存在各種不同版本的F,而這可能導致各種情況的編譯報錯,以及安裝滿,占磁盤空間。

對于問題3,package.json中我們只聲明了A,B~F都是因為扁平化處理才放到和A同級的node_modules下,理論上在項目中寫代碼時只可以使用A,但實際上B~F也可以使用,由于扁平化將沒有直接依賴的包提升到node_modules一級目錄,Node.js沒有校驗是否有直接依賴,所以項目中可以非法訪問沒有聲明過依賴的包。

這會產生兩個問題:

  • B~F中的包升級后,項目可能出問題
  • 額外的管理成本(比如協作時別人運行一次npm install后項目依舊跑不起來)

pnmp

pnpm(Performance npm)的作者Zoltan Kochan發現 yarn 并沒有打算去解決上述的這些問題,于是另起爐灶,寫了全新的包管理器。

pnpm復刻了npm所有的命令,所以使用方法和npm一樣,并且在安裝目錄結構上做了優化,特點是善用鏈接,且由于鏈接的優勢,大多數情況下pnpm的安裝速度比yarn和npm更快。

比如安裝A,A依賴了B:

1、安裝依賴

A和B一起放到.pnpm中(和上面相比,這里沒有耗時的扁平化算法)。

另外A@1.0.0下面是node_modules,然后才是A,這樣做有兩點好處:

  • 允許包引用自身
  • 把包和它的依賴攤平,避免循環結構

2、處理間接依賴

A平級目錄創建B,B指向B@1.0.0下面的B。

3、處理直接依賴

頂層node_modules目錄下創建A,指向A@1.0.0下的A。

對于更深的依賴,比如A和B都依賴了C:

總結

如果你想更快的速度,更小的空間,你應該選擇pnpm;

如果你要用Monorepo,你可以用yarn或pnpm;

如果是node項目,你應該用npm,因為這是node官方推薦的,而且yarn不支持node5+;

對于npm項目,如果你擔心項目的安全性,你可以考慮用yarn替換npm。

參考

1、為什么現在我更推薦 pnpm 而不是 npm/yarn?(

https://www.cnblogs.com/cangqinglang/p/14448329.html)

2、Node.js 包管理器發展史(

https://wxsm.space/2021/npm-history/)

3、JavaScript package managers compared: Yarn, npm, or pnpm?(

https://blog.logrocket.com/javascript-package-managers-compared/)

3、pnpm官網(https://pnpm.io/)


責任編輯:姜華 來源: 今日頭條
相關推薦

2022-02-28 10:22:08

前端管理工具

2023-04-12 00:00:40

Node.jsMonoreponpm

2024-06-20 08:06:04

2021-02-25 07:24:35

pnpm包管理器前端

2022-05-26 08:01:44

Pnpm包管理器磁盤

2021-11-29 12:11:09

npm包管理器工具

2022-02-25 14:19:56

依賴管理前端命令

2021-11-11 11:13:20

js Npm基礎

2024-05-10 08:41:05

NPMYarn

2018-10-15 15:00:42

UnixSysget包管理器

2022-09-16 22:23:35

pnpmCLI軟件

2025-07-07 06:21:46

2021-07-27 12:58:46

Linux包管理器安命令

2022-07-27 16:36:29

node.js前端

2025-03-25 08:50:00

2020-03-09 11:43:35

RustCargo編程語言

2020-12-03 12:06:54

HarmonyOS

2025-09-15 00:00:01

2022-08-03 00:04:29

pnpmyarnnpm

2021-12-09 09:27:22

MacOSHomebrew包管理器
點贊
收藏

51CTO技術棧公眾號

五月天色婷婷综合| 丝袜美腿玉足3d专区一区| 国产黄a三级三级三级av在线看 | 欧美男gay| 国产亚洲a∨片在线观看| 国产一区久久精品| 欧美性猛交xxxxxx富婆| 激情视频免费观看在线| 欧美国产精品久久| 天天影视综合色| 91在线国内视频| 乱妇乱女熟妇熟女网站| av在线免费不卡| 亚洲成人在线观看视频| av视屏在线播放| 国产亚洲va综合人人澡精品| 久久精品.com| 中文子幕无线码一区tr| 天天色综合6| 亚洲欧洲在线观看av| xxx亚洲日本| 亚洲天天做日日做天天谢日日欢| 成人免费xxxxx在线视频| 91免费版在线看| 亚洲成熟丰满熟妇高潮xxxxx| 91免费观看国产| 国产三级国产精品国产专区50| 久久精品夜色噜噜亚洲a∨| 无码少妇一区二区三区芒果| 中文字幕不卡三区| 深夜宅男网站免费进入| 欧美性猛交xxx| caoporn国产精品免费视频| 精品1区2区3区| 四虎影院观看视频在线观看 | 亚洲丝袜一区在线| 婷婷六月国产精品久久不卡| 国产午夜精品视频| 视频在线亚洲| 国产精品久久久久久av下载红粉| 精品盗摄女厕tp美女嘘嘘| 成人日韩在线电影| 久久不射2019中文字幕| 日韩a级黄色片| 国产精品天美传媒| 在线视频中文字幕| 欧美人成免费网站| 二区三区不卡| 97精品在线视频| 欧美日韩网站| 在线观看日本一区| 国产日产欧美一区| 天堂资源最新在线| 精品美女被调教视频大全网站| 成人国产激情| 国产精品久久久久高潮| 欧美中文字幕| 欧美一区二区三区爽大粗免费| 亚洲欧美另类图片小说| 在线免费av网站| 日韩在线视频国产| 99久久影视| 久久国产精品免费观看| 亚洲欧美视频在线观看视频| av二区在线| 国产一区二区三区日韩欧美| 女仆av观看一区| 国产在线一区二区三区播放| 成人黄色av电影| 性欧美孕妇孕交| 中文字幕国内精品| 亚洲一级淫片| 乱人伦xxxx国语对白| 一本一道久久a久久精品| 日本精品在线中文字幕| 国产综合久久久久久| 狠狠色狠狠色综合日日91app| 日本一二区视频| 在线观看视频99| 亚洲欧洲日本一区二区三区| 可以免费观看av毛片| 欧美日韩国产精选| 欧美日韩看看2015永久免费 | 国产日韩专区| 国产对白国语对白| 日韩国产欧美区| 91精品国产自产拍在线观看蜜 | 免费一级大片| 国产亚洲欧美视频| 欧美激情视频一区二区三区在线播放| 99久久免费观看| 欧美性大战久久久久久久蜜臀| 天天综合网站| 国产精品sss| 一区二区中文字幕在线| 美女视频在线免费| 国产精品一区二区av| 1区2区3区欧美| 成人精品三级| 欧美一区二区视频17c| 亚洲综合在线观看视频| 久久精品一区中文字幕| 久久九九精品| 一起操在线观看| 8090成年在线看片午夜| 国产乱一区二区| 久色国产在线| 精品久久久久久一区| 一区二区三区四区不卡在线| 久久99成人| 18禁网站免费无遮挡无码中文| 精品成人一区二区三区四区| 影音先锋中文字幕一区| 日本在线аv| 91精品国产亚洲| 久久精品一区二区三区四区| 日韩成人亚洲| 亚洲日本一区二区三区在线不卡| 在线观看网站黄不卡| 久久免费av| 神马久久影视大全| 97激碰免费视频| 久久九九全国免费| 天天综合在线观看| 亚洲 欧美 日韩 国产综合 在线 | 欧美人体大胆444www| 国产精品第8页| 一区二区在线观看不卡| 东京久久高清| 中文字幕一区二区三区四区在线视频| 伊人久久五月天| 国产黄人亚洲片| 丝袜美腿一区| 天天想你在线观看完整版电影免费 | 日韩一区二区三区四区五区| 男女激情免费视频| 精品一区二区亚洲| 国产一区二区三区黄视频 | 亚洲欧美在线人成swag| 狠狠精品干练久久久无码中文字幕| 欧美va亚洲va香蕉在线| 日本亚洲三级在线| www.超碰在线| 香港三级日本三级a视频| 国产午夜精品麻豆| 99久久精品国产导航| 96视频在线观看欧美| 国产美女作爱全过程免费视频| 亚洲日本中文字幕| 久久亚洲精品小早川怜子| 噜噜噜天天躁狠狠躁夜夜精品| 日本女优北野望在线电影| 成人国产精品一区二区| 色综合天天性综合| 一区二区三区四区五区在线 | 欧美猛男做受videos| 亚洲欧美一区二区三区在线播放| 91精品天堂| 日韩三级电影网址| 国产精品亚洲视频| 欧美h版在线观看| 美丽的小蜜桃4春潮| 亚洲一区二区三区xxx视频| 欧美日韩在线一区二区| 另类调教123区| 秋霞影院一区| 中文字幕在线视频不卡| 欧美高清视频一区| 国产亚洲激情视频在线| 综合中文字幕亚洲| 激情综合自拍| 欧美羞羞视频| 国产男女爽爽爽| 欧美黄色直播| 久热精品视频在线免费观看| 天天影视色香欲综合网老头| 亚洲欧美日韩国产综合精品二区| 黄色综合网址| 一本免费视频| 亚洲一区二区三区涩| 午夜精品久久久久久99热| 欧美在线视频日韩| jvid福利写真一区二区三区| 99热国内精品| 国模一区二区| 国产美女在线播放| 青少年xxxxx性开放hg| 欧美日韩第一视频| 欧美日韩国产一级| 久久久青草青青国产亚洲免观| 欧美69视频| 国产一区二区三区精品在线观看| 日中文字幕在线| 亚洲午夜无码av毛片久久| 91精品国产高清久久久久久91裸体 | 人妻熟女一二三区夜夜爱| 成人春色激情网| 亚洲性猛交xxxxwww| 亚洲第一狼人社区| 成人爱爱电影网址|