偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

npm,pnpm,yarn,npx的那些事兒

開發(fā) 前端
pnpm 起初看起來像 npm,因?yàn)樗鼈兊?CLI 用法相似,但管理依賴項(xiàng)卻大不相同;pnpm 的方法帶來更好的性能和最佳的磁盤空間效率。Yarn Classic 仍然很受歡迎,但它被認(rèn)為是遺留軟件,并且在不久的將來可能會(huì)放棄支持。Yarn Berry PnP 是新貴,但尚未看到它徹底改變包管理器領(lǐng)域的潛力。

?包管理器歷史

最早發(fā)布的包管理器是 npm,他在 2010 年 1 月就已經(jīng)發(fā)布了。它確立了包管理器工作的核心原則。

npm 的發(fā)布誕生了一場革命,在此之前,項(xiàng)目依賴項(xiàng)都是手動(dòng)下載和管理的。npm 引入了文件和元數(shù)據(jù)字段,將依賴項(xiàng)列表存儲(chǔ)在 package.json 文件中,并且將下載的文件保存到 node_modules 文件夾中。

隨著 node 的發(fā)展,node 的包越來越多,人們?cè)陧?xiàng)目中添加的依賴越來越多,如何更快地下載,如何安全地下載被人們開始重視起來,于是在 2016年,F(xiàn)acebook 等公司開發(fā)了新的包管理器,就是我們現(xiàn)在經(jīng)常使用的 yarn。

yarn 的結(jié)構(gòu)設(shè)計(jì)參考了 npm,這導(dǎo)致 yarn 的初期版本主要通過并行化來解決安裝加速的問題。

圖片

當(dāng)然 yarn 也提出了一些新概念,比如離線緩存,文件鎖定,緩存感知等。

當(dāng) yarn 出現(xiàn)以后,越來越多的人意識(shí)到 npm 的缺點(diǎn),于是有人在 yarn 之后, 又發(fā)明了一個(gè)新的 npm 版本,它被定義為 pnpm。

圖片

pnpm 和 npm, yarn的管理策略不同,它通過引入內(nèi)容可尋址存儲(chǔ)來提升性能。通過生成嵌套的 node_modules 文件夾,每個(gè)版本的依賴項(xiàng)僅僅物理存儲(chǔ)一次,節(jié)省了大量磁盤空間。通過符號(hào)鏈接,實(shí)現(xiàn)了文件的依賴管理。

圖片

在 pnpm 之后, yarn 感受到了對(duì)手的挑戰(zhàn),于是在 2020 年, yarn 2誕生了,這是一個(gè)全新的包管理器,可以說它和之前的 yarn 改動(dòng)非常大,它通過了 PnP 的方法進(jìn)行依賴的管理,通過依賴查找表進(jìn)行包的管理,同時(shí),每個(gè)包通過zip的方式進(jìn)行存儲(chǔ),大大節(jié)省了磁盤空間。

npm

npm 通過 install 來安裝包,然后會(huì)在當(dāng)前目錄生成一個(gè) package.json 文件 和 node_modules 文件夾,package.json 文件保存了報(bào)的版本,node_modules 文件夾保存了完整的包文件。

yarn

yarn 通過 add 來安裝包,同樣地,它也會(huì)在當(dāng)前目錄總生成一個(gè)package.json 文件 和 node_modules 文件夾,不同的是,它會(huì)有自己的鎖定文件 yarn.lock, 此外它還會(huì)生成.yarn/cache/ 緩存文件夾。

pnpm

pnpm 項(xiàng)目的初始狀態(tài)看起來就像一個(gè) npm 項(xiàng)目一樣,也是有 package.json 文件 和 node_modules 文件夾,不同的是在 node_modules 文件夾中, 它有自己的文件夾目錄 .pnpm,在這個(gè)目錄中,它會(huì)用平鋪的方式來存儲(chǔ)各個(gè)包,然后以依賴名和版本號(hào)的名字命名,實(shí)現(xiàn)了版本的復(fù)用。而且它不是通過拷貝機(jī)器緩存中的依賴到項(xiàng)目目錄下,而是通過硬鏈接的方式,這能減少空間占用。

npx

npx想要解決的主要問題,就是調(diào)用項(xiàng)目內(nèi)部安裝的模塊。比如項(xiàng)目內(nèi)部安裝了測試工具webpack,我們要使用的話需要通過node-modules/.bin/webpack -v這樣來使用,但是有了npx,我們可以直接npx webpack -v就能使用。此外,對(duì)于一些全局命令,如果不存在,它會(huì)自動(dòng)下載安裝到一個(gè)臨時(shí)目錄,然后使用,不會(huì)污染全局空間。

結(jié)論

包管理器的當(dāng)前狀態(tài)非常好。我們幾乎在所有主要的包管理器中實(shí)現(xiàn)了功能平等。但是,它們?cè)谝嫔w下確實(shí)存在很大差異。

圖片

pnpm 起初看起來像 npm,因?yàn)樗鼈兊?CLI 用法相似,但管理依賴項(xiàng)卻大不相同;pnpm 的方法帶來更好的性能和最佳的磁盤空間效率。Yarn Classic 仍然很受歡迎,但它被認(rèn)為是遺留軟件,并且在不久的將來可能會(huì)放棄支持。Yarn Berry PnP 是新貴,但尚未看到它徹底改變包管理器領(lǐng)域的潛力。

責(zé)任編輯:武曉燕 來源: 程序那些事兒
相關(guān)推薦

2025-03-25 08:50:00

2021-11-29 12:11:09

npm包管理器工具

2024-06-20 08:06:04

2022-02-25 14:19:56

依賴管理前端命令

2024-05-10 08:41:05

NPMYarn

2022-02-28 10:22:08

前端管理工具

2022-08-03 00:04:29

pnpmyarnnpm

2022-02-21 09:58:31

包管理器npmyarn

2017-07-13 17:00:17

內(nèi)置執(zhí)行器開發(fā)

2023-04-12 00:00:40

Node.jsMonoreponpm

2023-04-11 07:34:40

分布式系統(tǒng)算法

2021-03-18 09:01:53

軟件開發(fā)軟件選型

2013-12-26 14:23:03

定位系統(tǒng)GPS監(jiān)測

2021-06-09 13:28:40

密碼安全身份認(rèn)證數(shù)據(jù)安全

2018-09-26 06:50:19

2021-06-02 08:33:31

TPCTPC-H系統(tǒng)

2011-02-25 14:35:00

2022-02-08 17:39:04

MySQL服務(wù)器存儲(chǔ)

2010-10-15 10:31:00

2021-02-01 14:17:53

裝飾器外層函數(shù)里層函數(shù)
點(diǎn)贊
收藏

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