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

徹底搞懂 npm、yarn 與 pnpm 依賴(lài)管理邏輯

開(kāi)發(fā) 前端
我們?cè)陧?xiàng)目開(kāi)發(fā)的過(guò)程中會(huì)引用到各種不同的庫(kù),各種庫(kù)又依賴(lài)了其他不同的庫(kù),這些依賴(lài)應(yīng)該如何進(jìn)行管理,今天這篇文章主要聊的就是這個(gè)事情。


npm2的依賴(lài)管理

npm2 安裝依賴(lài)的時(shí)候比較簡(jiǎn)單直接,直接按照包依賴(lài)的樹(shù)形結(jié)構(gòu)下載填充本地目錄結(jié)構(gòu)。

比如在項(xiàng)目中A和 C 都依賴(lài) B,無(wú)論被依賴(lài)的 B 是否是同一個(gè)版本,都會(huì)直接無(wú)腦的生成對(duì)應(yīng)的樹(shù)結(jié)構(gòu),比如我們現(xiàn)在有下面的依賴(lài):

  • A@2.0.0:BaseA@1.0.0 BaseB@2.0.0
  • B@3.0.0:BaseA@1.0.0 BaseB@2.0.1

那么npm i之后node_modules里面生成的內(nèi)容將是下面這樣的

這樣的結(jié)構(gòu)非常直觀,但是有一個(gè)問(wèn)題就是,如果項(xiàng)目的依賴(lài)過(guò)多的話,可能導(dǎo)致下面這些問(wèn)題:

  1. 生成的依賴(lài)嵌套非常深
  2. 相同版本的依賴(lài)大量冗余

npm3/yarn的依賴(lài)管理

npm3對(duì)于npm2的情況進(jìn)行了優(yōu)化,那么如何進(jìn)行優(yōu)化呢?其實(shí)我們最直觀的思路就是將樹(shù)打平,將依賴(lài)扁平化,不就能解決嵌套過(guò)深和依賴(lài)冗余的問(wèn)題。所以,在上面的例子中,如果我們用npm3來(lái)進(jìn)行install,最后生成的node_modules會(huì)是這樣的結(jié)構(gòu):

這樣看起來(lái)是不是就好多了,但是此時(shí)會(huì)有什么問(wèn)題呢?我們實(shí)操一下試試看。在項(xiàng)目中安裝A和B

可以看到我們項(xiàng)目本身的依賴(lài)文件里面只有a_klx和b_klx,但是執(zhí)行完npm i命令后卻發(fā)現(xiàn)多了幾個(gè)我們沒(méi)有引入的包a_base_klx和b_base_klx。

其實(shí)這是由a_klx和b_klx本身自己引入的npm包,但是卻出現(xiàn)在了我們的node_modules下。那么如果我們直接使用這兩個(gè)包會(huì)有什么反應(yīng)呢?

可以看到,我們是可以正常使用這兩個(gè)我們并未聲明在依賴(lài)中的npm包的,因?yàn)檫@兩個(gè)包存在于我們項(xiàng)目的node_modules下,根據(jù)npm包的查找規(guī)則,我們是可以找到這兩個(gè)包的。所以這種依賴(lài)關(guān)系就導(dǎo)致了下面兩個(gè)問(wèn)題:

  1. 我們項(xiàng)目本身的node_modules結(jié)構(gòu)不夠直觀
  2. 依賴(lài)不安全,我們可以使用依賴(lài)文件中并沒(méi)有聲明的npm包

其實(shí)第一點(diǎn)的問(wèn)題并不是很大,主要是第二點(diǎn)可能會(huì)導(dǎo)致一些奇怪的問(wèn)題。以我們之前的例子來(lái)說(shuō),我們可以直接在項(xiàng)目里面直接使用a_base_klx,因?yàn)閚ode_modules里面這兩個(gè)包實(shí)際上是存在的,但是他們又不是永遠(yuǎn)存在的。

萬(wàn)一有一天,a_klx和b_klx里都去除了這兩個(gè)基礎(chǔ)包的引用,node_modules里面將不再存在a_base_klx和b_base_klx,那么我們的代碼就會(huì)出現(xiàn)問(wèn)題...也就是:

我的代碼啥也沒(méi)動(dòng),放了一個(gè)晚上就壞了!

同時(shí),我們對(duì)于這種處理方式其實(shí)很容易有一個(gè)疑問(wèn),如果我同時(shí)引用了同一個(gè)包的多個(gè)不同版本,會(huì)幫我把哪個(gè)包提出來(lái),同時(shí)我每次npm i之后提出來(lái)的包版本都是一樣的嗎?會(huì)不會(huì)存在這次是2.0.0版本下次是2.0.1版本的情況,比如我們下面這種情況:

  •  A@1.0.0:BaseA@1.0.0 BaseB@2.0.0
  • B@1.0.0:BaseA@1.0.0 BaseB@2.0.1
  • D@1.0.0:BaseA@1.0.0 BaseB@2.0.1

生成的依賴(lài)是下面這樣的:

還是下面這樣的:

其實(shí)看起來(lái)后面這個(gè)更合理,因?yàn)橛袃蓚€(gè)包用到了2.0.1版本,將它提出來(lái)更好,我們實(shí)際操作一下試試:

被提到最外層的包是2.0.0版本的,然后b_klx和d_klx的node_modules下面各自有一個(gè) b_base_klx@2.0.1

這一塊的內(nèi)容自己查了一下,大部分說(shuō)法是會(huì)根據(jù)package.json里面的順序決定誰(shuí)會(huì)被提出來(lái),放在前面的包依賴(lài)的內(nèi)容會(huì)被先提出來(lái)。

不過(guò)自己實(shí)操了一下發(fā)現(xiàn)并不是這樣,即使我把b_klx或者d_klx移到最前面,被提出來(lái)的包依然是a_klx依賴(lài)的2.0.0版本,隨后自己翻了一下npm的源碼,發(fā)現(xiàn)內(nèi)部其實(shí)會(huì)對(duì)拿到的依賴(lài)列表進(jìn)行一些處理

最終會(huì)通過(guò)localeCompare方法對(duì)依賴(lài)進(jìn)行一次排序,所以字典序在前面的npm包的底層依賴(lài)會(huì)被優(yōu)先提出來(lái),對(duì)于我們的例子來(lái)說(shuō)就是a_klx所依賴(lài)的b_base_klx@2.0.0會(huì)被優(yōu)先提出來(lái)。

pnpm的依賴(lài)管理

pnpm為了解決上述這些問(wèn)題,采用了一種不同于npm/yarn的依賴(lài)管理方式。

如果我們用pnpm再來(lái)安裝一遍上面的依賴(lài),會(huì)發(fā)現(xiàn)項(xiàng)目的node_modules文件夾只有當(dāng)前package.json中所聲明的各個(gè)依賴(lài)(的軟連接),而真正的模塊文件,存在于node_modules/.pnpm,由模塊名@版本號(hào)形式的文件夾扁平化存儲(chǔ)(解決依賴(lài)重復(fù)安裝)。

同時(shí)這樣設(shè)計(jì),也很好的避免了之前可以訪問(wèn)非法npm包的問(wèn)題,因?yàn)楫?dāng)前項(xiàng)目的node_modules只有我們聲明過(guò)的依賴(lài),這也讓node_modules里面的文件看起來(lái)非常的直觀。

同時(shí),node_modules/.pnpm中存儲(chǔ)的文件其實(shí)是pnpm實(shí)際緩存文件的「硬鏈接」,從而避免了多個(gè)項(xiàng)目帶來(lái)多份相同文件引起的空間浪費(fèi)問(wèn)題。

但是說(shuō)到硬鏈接,又有一個(gè)問(wèn)題,這相當(dāng)于所有項(xiàng)目都依賴(lài)了同一個(gè)文件,那么在一個(gè)項(xiàng)目中修改了某個(gè)npm包的文件,就會(huì)影響到其他項(xiàng)目,這對(duì)于postinstall是很不友好的。

隨后繼續(xù)實(shí)操了一下,確實(shí)在不同項(xiàng)目中修改了某個(gè)npm包后會(huì)影響到其他項(xiàng)目。同時(shí)自己平時(shí)有時(shí)候也會(huì)直接在node_modules里面調(diào)試一些東西..感覺(jué)這種處理方式對(duì)于這種操作來(lái)說(shuō)也不是很友好。

但是從pnpm的官網(wǎng)來(lái)看,其實(shí)它默認(rèn)會(huì)使用copy-on-write 的方式來(lái)進(jìn)行處理,也就是如果你嘗試對(duì)內(nèi)容進(jìn)行修改的話,會(huì)復(fù)制一份文件而不會(huì)影響到源文件。

然后它不生效的原因似乎是因?yàn)閘ibuv的bug:https://github.com/pnpm/pnpm/issues/2761,所以在copy-on-write不生效的情況下被回退到了hardlink  的方式去處理。

責(zé)任編輯:龐桂玉 來(lái)源: 前端大全
相關(guān)推薦

2021-11-29 12:11:09

npm包管理器工具

2022-02-28 10:22:08

前端管理工具

2024-06-20 08:06:04

2022-09-16 22:23:35

pnpmCLI軟件

2022-02-21 09:58:31

包管理器npmyarn

2024-05-10 08:41:05

NPMYarn

2025-03-25 08:50:00

2025-09-15 00:00:01

2025-03-17 00:21:00

2025-07-07 06:21:46

2025-10-20 08:17:01

2023-04-12 00:00:40

Node.jsMonoreponpm

2022-08-03 00:04:29

pnpmyarnnpm

2023-10-07 08:35:07

依賴(lài)注入Spring

2021-06-30 08:45:02

內(nèi)存管理面試

2023-04-18 23:44:54

性能優(yōu)化開(kāi)發(fā)preload

2025-04-21 04:00:00

2021-02-25 07:24:35

pnpm包管理器前端

2024-12-04 13:54:19

pnpm存儲(chǔ)項(xiàng)目

2024-03-08 10:38:07

Vue響應(yīng)式數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲午夜在线观看| 一区在线播放| 狠狠狠色丁香婷婷综合激情| 日韩免费性生活视频播放| 欧美中在线观看| 人人爽人人爽av| 青青草在线免费视频| 91成人app| 久久精品一区二区三区不卡牛牛| 不卡av在线网站| 人妻丰满熟妇av无码区app| 精品人妻伦一区二区三区久久 | 国产免费久久av| 五月天丁香社区| 成人直播在线| 国产一区日韩二区欧美三区| xvideos亚洲| 亚洲成人天堂网| av在线资源网| 可以免费看不卡的av网站| 亚洲第一中文字幕| 白白操在线视频| a在线观看免费| 你懂的亚洲视频| 欧美成人性福生活免费看| 日本道在线视频| 99热这里只有精品66| 亚洲免费影院| 亚洲欧美一区二区激情| 欧美极品欧美精品欧美图片| 深夜福利在线观看直播| 一区二区三区四区五区在线| 日韩av在线天堂网| 免费超爽大片黄| 黄色av网站免费在线观看| 国模大胆一区二区三区| 亚洲精品福利在线观看| 久久久噜噜噜www成人网| 黄色免费网站在线| 国产精品性做久久久久久| 久久亚洲影音av资源网| 天堂久久精品忘忧草| 亚洲国产尤物| 亚洲日本在线a| 国产精品久久国产精品| 日本一区二区三区四区五区| 欧美一区自拍| 一本久久综合亚洲鲁鲁五月天 | 国产喷水福利在线视频| 忘忧草精品久久久久久久高清| 在线不卡一区二区| 老司机午夜免费福利视频| av中文字幕在线| 26uuu成人网一区二区三区| 国产精品国产三级国产aⅴ浪潮| 美女av免费看| aaa国产精品视频| 精品久久久久久电影| 欧美日韩精品久久| 一区二区美女视频| 激情五月***国产精品| 久久99精品国产99久久6尤物| 国产a级黄色片| 福利一区二区三区视频在线观看| 亚洲免费观看高清| 免费看成人午夜电影| 国产又大又长又粗| 亚洲日本免费| 久久天天躁狠狠躁夜夜躁| 国产精品白丝喷水在线观看| 丝袜美腿综合| 337p亚洲精品色噜噜噜| 1024av视频| 精品国产99久久久久久| 最好看的中文字幕久久| 欧美日韩成人一区二区三区| 黄色软件在线观看| 成人高清在线视频| 成人午夜激情免费视频| wwwwww国产| 午夜久久tv| 欧美激情中文网| 免费看一级黄色| 少妇久久久久| 中文字幕亚洲综合久久筱田步美| 中文字幕一区三区久久女搜查官| 成人四虎影院| 日韩一区二区三区电影在线观看 | 日韩电影一区二区三区四区| 欧美超级乱淫片喷水| 毛片网站免费观看| 99精品在免费线中文字幕网站一区 | 成人av一区二区三区| 日本电影一区二区三区| www视频在线| av亚洲产国偷v产偷v自拍| 国产日韩精品在线| 久久久久久无码精品大片| 夜夜嗨一区二区三区| 日本中文字幕久久看| 精品少妇久久久| 91精品国产调教在线观看| 亚洲最新在线视频| xxxx日本黄色| 久久成人高清| 亚洲女人天堂视频| 免费成人深夜夜行网站| 欧洲乱码伦视频免费| 精品亚洲一区二区三区四区五区| 成人啪啪18免费游戏链接| 中文字幕日本一区| 日韩高清av一区二区三区| 一级免费黄色录像| 久久xxxx精品视频| 奇米成人av国产一区二区三区| 中文字幕一区二区免费| 蜜桃av一区二区在线观看| 国产精品久久久久高潮| 成人午夜精品福利免费| 亚洲国产成人自拍| 亚洲一区二区三区四区中文| 毛片在线导航| 亚洲v日本v欧美v久久精品| 欧美日韩视频免费| 免费av不卡在线观看| 欧美性受xxxx| 亚洲三级在线观看视频| 九热爱视频精品视频| 国a精品视频大全| www.日本精品| 天使萌一区二区三区免费观看| 91亚色免费| 日本黄视频在线观看| 99国产精品国产精品毛片| 久久精品午夜一区二区福利| 国产在线视频你懂得| 亚洲动漫第一页| 国产男女无遮挡| 国产第一精品| 亚洲天天在线日亚洲洲精| 黄色免费一级视频| 日本中文字幕一区二区视频| 91精品国产综合久久香蕉922| 日韩亚洲视频在线观看| 性做久久久久久免费观看欧美| 日本一本在线视频| 欧美黑人巨大videos精品| 欧美另类极品videosbestfree| 97人妻人人澡人人爽人人精品| 国产清纯白嫩初高生在线观看91| 国产精品h视频| 欧美wwww| 欧美成人综合网站| 免费在线视频观看| 久久久久久久高潮| 免费成人在线观看av| 校园春色亚洲| 91精品蜜臀在线一区尤物| 极品久久久久久久| 影音先锋久久精品| 国产日韩欧美一区二区三区四区| yiren22亚洲综合伊人22| 色婷婷久久综合| 国产av自拍一区| 蜜桃一区二区三区在线| 中文字幕日韩一区二区三区不卡| 91超碰在线免费| 欧美在线观看你懂的| 免费看黄色三级| 韩国成人精品a∨在线观看| 懂色av一区二区三区四区五区| 国产情侣一区在线| 亚洲欧美日韩精品久久| 一级片在线观看免费| 国产一区二区免费在线| 特级西西444| 国产精品久久久久av蜜臀| 日韩专区中文字幕| www.97av.com| 欧美视频在线免费看| 日本超碰在线观看| 亚洲天天影视网| 国产精品久久综合av爱欲tv| 三级在线观看网站| 亚洲欧美日韩精品久久久久| 潘金莲一级淫片aaaaa| 亚洲精品国产日韩| 日韩欧美精品久久| 伊伊综合在线| 日韩电影网在线| 在线观看国产小视频| 久久蜜桃av一区二区天堂| 免费一级淫片aaa片毛片a级| 日韩高清影视在线观看| 国产精品久久久久久五月尺| 男插女视频久久久| 国产一区二区三区在线| 国产成人精品毛片| 色视频一区二区| 免费a级黄色片| 久久精品国产亚洲aⅴ| 欧美日韩精品一区| 激情综合婷婷| 久久久精品在线| 91精东传媒理伦片在线观看| 亚洲专区一二三| 亚洲精品鲁一鲁一区二区三区 | 欧美成人h版在线观看| 四虎影视在线观看2413| 日韩欧美在线观看一区二区三区| 91九色丨porny丨肉丝| 亚洲色图视频网| 美女久久久久久久久久| 海角社区69精品视频| 日本成人黄色免费看| 精品少妇一区| 91精品国产沙发| 婷婷在线免费观看| 亚洲欧美日韩精品久久久久| 9.1成人看片免费版| 国产xxx精品视频大全| 少妇大叫太大太粗太爽了a片小说| 女厕嘘嘘一区二区在线播放| 国产成人亚洲欧美| a级大胆欧美人体大胆666| 日韩在线免费观看视频| 国产美女明星三级做爰| 91高清视频在线| 在线观看免费国产视频| 久久久亚洲高清| 黄色av网址在线观看| 国产成人亚洲综合a∨婷婷| 成人免费在线视频播放| 婷婷激情图片久久| 亚洲看片网站| 婷婷视频一区二区三区| 午夜免费久久久久| 久草视频在线看| 日韩福利视频在线观看| 天天干天天草天天射| 欧美精品一区二区三区蜜桃| 三级网站在线播放| 成人欧美一区二区三区黑人麻豆| 精品无码在线观看| 国产无一区二区| www.午夜av| 亚洲日本视频| 久久久亚洲精品无码| 自拍偷拍一区| 成人性教育视频在线观看| 精品视频在线一区二区在线| 国产精品男人的天堂| jizzjizz少妇亚洲水多| 国产精品日韩在线播放| 韩国精品视频在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 影音先锋男人在线资源| 亚洲无线码在线一区观看| 麻豆影视在线| 欧美va亚洲va国产综合| 亚洲AV无码精品国产| 欧美网站大全在线观看| 亚洲午夜无码久久久久| 亚洲国产va精品久久久不卡综合| 久久久久久久久久一区二区三区| 亚洲国产精品精华液网站 | 色美美综合视频| 亚洲精品国产精品国自产网站按摩| 欧美在线不卡一区| av中文字幕在线免费观看| 亚洲第一中文字幕| 国产高清美女一级毛片久久| 日韩久久久精品| 隣の若妻さん波多野结衣| 亚洲精品久久久久久久久久久久久 | 五月天综合婷婷| 亚洲国产第一| 91av俱乐部| 国产精品小仙女| 久久久无码人妻精品一区| 欧美极品美女视频| 免费一级a毛片夜夜看| 欧美日韩亚洲精品一区二区三区| 91麻豆精品成人一区二区| 一区二区三区在线免费| 美国黄色片视频| 亚洲午夜激情网站| 69xx绿帽三人行| 亚洲欧美日韩在线播放| 日本一区二区欧美| 欧美喷潮久久久xxxxx| 免费看毛片网站| 欧美一区二区三区不卡| 97视频免费在线| 亚洲国产福利在线| 日本免费中文字幕在线| 色偷偷9999www| 1区2区3区在线| 国产精品视频免费在线观看| 国产精东传媒成人av电影| 亚洲 国产 日韩 综合一区| 国产欧美日韩| 欧美中文娱乐网| 午夜视频一区| 青青草精品视频在线观看| 日韩国产欧美在线视频| 91视频免费入口| 国产成人精品亚洲777人妖| 黄色aaa视频| 亚洲一区二区欧美| 国产麻豆91视频| 亚洲最新中文字幕| 一个人看的www视频在线免费观看| 成人淫片在线看| 国产一区二区三区站长工具| 国产精品成人久久电影| 久久99国产精品成人| 色姑娘综合天天| 国产欧美一区二区三区在线老狼 | 在线观看av黄网站永久| 97成人超碰免| 999在线精品| 日韩精品手机在线观看| 久久爱另类一区二区小说| 日韩中文字幕电影| 精品露脸国产偷人在视频| 亚洲爱情岛论坛永久| 欧美精品亚州精品| 成人在线视频区| 中文字幕av日韩精品| 蜜臀av一区二区在线观看| 久久精品一区二区免费播放| 婷婷综合另类小说色区| 黄色av一区二区三区| 欧美老女人性生活| 韩国三级大全久久网站| 大桥未久一区二区三区| 1024日韩| 成人欧美精品一区二区| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲一级av毛片| 在线观看久久av| 久久人体av| 中文字幕一区二区三区在线乱码| 琪琪一区二区三区| 天堂网av2018| 51久久夜色精品国产麻豆| 黄色在线论坛| 91在线视频九色| 国产精品视频首页| 亚洲一区二区免费视频软件合集| 麻豆91精品91久久久的内涵| 蜜桃视频最新网址| 欧美一区在线视频| 国产极品人妖在线观看| 国产精品高清在线| 欧美亚洲国产激情| 黄色成人在线看| 99久久99久久免费精品蜜臀| 国产精品国产三级国产专区52 | av片在线免费观看| 欧美国产精品日韩| av在线一区不卡| 伊人色综合影院| 国产乱妇无码大片在线观看| 国产性一乱一性一伧一色| 日韩av影院在线观看| 韩国成人在线| 最近中文字幕免费mv| 国产成人av一区二区三区在线| 黄色小说在线观看视频| 911精品国产一区二区在线| 激情视频在线观看| 国产成人看片| 丝袜诱惑亚洲看片| 色老板免费视频| 日韩国产高清污视频在线观看| 日本免费一区二区三区四区| 国产精品制服诱惑| 久久国产日本精品| 日韩精品一区二区三区在线视频| 日韩女优视频免费观看| 亚洲国产成人二区| 中文字幕中文字幕在线中一区高清 | 国产综合自拍| 精品欧美一区二区久久久| 3atv一区二区三区| 涩涩在线视频| 国产日韩一区二区| 日本强好片久久久久久aaa| 欧美国产日韩在线观看成人| 欧美日韩午夜在线视频| jizz日韩| 国产精品久久波多野结衣| 老**午夜毛片一区二区三区| 永久久久久久久| 亚洲人av在线影院| 国产精品扒开腿做爽爽爽视频软件| 国精产品一区二区| 久久精品国产77777蜜臀|