gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

JavaScript包管理器比較:Npm vs Yarn vs Pnpm

本篇文章帶大家了解一下三種JavaScript包管理器(npm、yarn、pnpm),并將這三種包管理器進(jìn)行對(duì)比,聊聊npm、yarn、pnpm三者的區(qū)別和關(guān)聯(lián),希望對(duì)大家有所幫助,如有問題歡迎指出!

JavaScript包管理器比較:Npm vs Yarn vs Pnpm

包管理器領(lǐng)域的三個(gè)主要參與者:

  • npm

  • Yarn

  • 高性能 npm (pnpm)

實(shí)際上我們已經(jīng)在所有包管理器中實(shí)現(xiàn)了基本相似的功能,因此您很可能會(huì)根據(jù)非功能性要求來決定使用哪個(gè)包管理器,例如安裝速度、存儲(chǔ)消耗或?qū)嶋H情況。

當(dāng)然,您選擇使用每個(gè)包管理器的方式會(huì)有所不同,但它們都有基本一致的概念。以上這些包管理器都可以執(zhí)行以下指令:

  • 讀寫數(shù)據(jù)
  • 批量安裝或更新所有依賴項(xiàng)
  • 添加、更新和刪除依賴項(xiàng)
  • 運(yùn)行腳本
  • 發(fā)布包

然而盡管如此,包管理器在底層還是有所不同的。傳統(tǒng)上 npmYarn 將依賴項(xiàng)安裝在一個(gè)平鋪的node_modules文件夾中。(這里注意先后順序,是 yarn 先平鋪的,之前 npm 是遞歸)。但是平鋪也會(huì)造成一系列的安全問題。

  • 依賴結(jié)構(gòu)的不確定性

  • 扁平化算法本身的復(fù)雜性很高,耗時(shí)較長(zhǎng)。

  • 項(xiàng)目中仍然可以非法訪問

  • 有聲明過依賴的包

因此,pnpmnode_modules 文件夾中引入了一些新概念來更高效的存儲(chǔ)依賴,。Yarn Berry 甚至通過完全放棄 node_modules 的 (PnP) 模式(另一個(gè)文章會(huì)具體說明)來走得更遠(yuǎn)。

JavaScript package簡(jiǎn)史


最早發(fā)布的包管理器是 npm,早在 2010 年 1 月。它就確立了今天包管理器工作的核心原則。但是既然 npm 已經(jīng)存在 10 多年了,為什么還有其他選擇?以下是出現(xiàn)這種情況的一些關(guān)鍵原因:

  • node_modules 文件夾結(jié)構(gòu)的依賴關(guān)系解析算法不同(嵌套 & 平鋪、node_modules vs. PnP mode)
  • 依賴提升方式不同(hoisting
  • locking 格式不同(性能都不同,比如 yarn 自己寫的那一套)
  • 磁盤存儲(chǔ)包文件方式不同(空間效率不同)
  • 多包項(xiàng)目(又名 workspaces)的支持不同,這會(huì)影響 monorepos 的可維護(hù)性和速度
  • 新工具和命令的需求不同(通過插件和社區(qū)工具對(duì)可擴(kuò)展性的需求不同)
  • 可配置性和靈活性不同

讓我們深入了解一下 npm 崛起后這些方面如何確定的歷史,Yarn Classic 如何解決其中的一些問題,pnpm如何擴(kuò)展這些概念,以及 Yarn Berry 作為 Yarn Classic 的繼任者如何打破這些傳統(tǒng)的概念和流程。

先驅(qū)者 npm

npm 是包管理器的鼻祖。許多人錯(cuò)誤地認(rèn)為 npm 是“Node package manager”的首字母縮寫詞,但事實(shí)并非如此。

它的發(fā)布構(gòu)成了一場(chǎng)革命,因?yàn)樵诖酥埃?xiàng)目依賴項(xiàng)都是手動(dòng)下載和管理的。npm 引入了諸如文件及其元數(shù)據(jù)字段、將依賴項(xiàng)存儲(chǔ)在node_modules, 自定義腳本, 公共和私有包等等。

2020 年,GitHub 收購(gòu)了 npm,所以原則上 npm 現(xiàn)在歸微軟管理。在撰寫本文時(shí),最新的主要版本是 v8,于 2021 年 10 月發(fā)布。

創(chuàng)新者 Yarn Classic

在 2016 年 10 月,F(xiàn)acebook 宣布與 Google 和其他一些公司合作開發(fā)一個(gè)新的包管理器(engineering.fb.com/2016/10/11/…),以解決 npm 當(dāng)時(shí)存在的一致性、安全性和性能問題。他們將替代品命名為Yarn。

盡管 Yarn 還是基于 npm 的許多概念和流程來架構(gòu)設(shè)計(jì)的,但 Yarn 還是對(duì)包管理器領(lǐng)域產(chǎn)生了重大影響。與 npm 相比,Yarn 并行化操作以加快安裝過程,這一直是 npm 早期版本的主要痛點(diǎn)。

Yarn 為讀寫、安全性和性能設(shè)定了更高的標(biāo)準(zhǔn),還發(fā)明了許多概念(后來npm也為此做了很多改進(jìn)),包括:

  • monorepo 支持
  • 緩存安裝
  • 離線下載
  • 文件鎖(Locking

Yarn v1 于 2020 年進(jìn)入維護(hù)模式 。從那時(shí)起,v1.x 系列被認(rèn)為是舊版,并更名為 Yarn Classic。它的繼任者 Yarn v2 (Berry) 現(xiàn)在是更加活躍的開發(fā)分支。

更高效的pnpm

pnpm 的第 1 版由 Zoltan Kochan于 2017 年發(fā)布。它是 npm 的替代品,所以如果你有一個(gè) npm 項(xiàng)目,你可以馬上使用 pnpm

創(chuàng)建 pnpm 的主要原因是 npmYarn 對(duì)于跨項(xiàng)目使用的依賴項(xiàng)存儲(chǔ)結(jié)構(gòu)非常冗余。盡管 Yarn Classicnpm 具有速度優(yōu)勢(shì),但它使用相同的依賴解析方法,這對(duì) pnpm 來說是不行的:npmYarn Classic 使用 hoisting 來平鋪他們的 node_modules.

pnpm 沒有優(yōu)化之前的結(jié)構(gòu),而是引入了另一種依賴解決策略:內(nèi)容尋址的一種存儲(chǔ)結(jié)構(gòu)。此方法生成的 node_modules 文件夾其實(shí)是依賴于全局存儲(chǔ)在主文件夾上的 ~/.pnpm-store/ 目錄。每個(gè)版本的依賴項(xiàng)都物理形式存儲(chǔ)在該目錄文件夾中一次,構(gòu)成單一的源地址來節(jié)省相當(dāng)多的磁盤空間。

node_modules 結(jié)構(gòu)是通過使用 symlinks 創(chuàng)建依賴關(guān)系的嵌套結(jié)構(gòu)(其中文件夾內(nèi)每個(gè)文件/包都是通過硬鏈接存儲(chǔ))官方文檔中的下圖闡明了這一點(diǎn)。(待填坑:軟硬鏈接)

JavaScript包管理器比較:Npm vs Yarn vs Pnpm

2021 年報(bào)告中可見 pnpm 的影響力:因?yàn)樗麄冊(cè)趦?nèi)容可尋址存儲(chǔ)方面的創(chuàng)新,競(jìng)爭(zhēng)對(duì)手都希望采用 pnpm 的概念,比如象征性鏈接的結(jié)構(gòu)和包的高效磁盤管理。

Yarn (v2, Berry),用 Plug'n'Play 重新發(fā)明的輪子

Yarn 2于 2020 年 1 月發(fā)布,被宣傳為原始 Yarn 的重大升級(jí)。Yarn 團(tuán)隊(duì)將其稱為 Yarn Berry 以更明顯地表明它本質(zhì)上是一個(gè)具有新的代碼庫(kù)和新的原則規(guī)范的新包管理器。

Yarn Berry 的主要?jiǎng)?chuàng)新是其即插即用 (PnP)方法,它是作為修復(fù)node_modules的策略。不是生成node_modules 的策略,而是生成一個(gè)帶有依賴查找表的文件 .pnp.cjs,因?yàn)樗菃蝹€(gè)文件而不是嵌套的文件夾結(jié)構(gòu),所以可以更有效地處理依賴。此外,每個(gè)包都以zip 文件的形式存儲(chǔ)在文件夾內(nèi)來替代 .yarn/cache/,占用的磁盤空間也比 node_modules 少。

所有這些變化如此之快以至于在發(fā)布后引起了很大的爭(zhēng)議。PnP 這種破壞性的重大更改要求維護(hù)者更新他們現(xiàn)有的包以便與其兼容。默認(rèn)情況下使用全新的 PnP 方法并且恢復(fù)到 node_modules 最初并不簡(jiǎn)單,這導(dǎo)致許多知名開發(fā)人員沒有加入其中的考慮且公開批評(píng) Yarn 2。

此后,Yarn Berry 團(tuán)隊(duì)在其后續(xù)版本中解決了許多問題。為了解決 PnP 的不兼容問題,團(tuán)隊(duì)提供了方法來輕松更改默認(rèn)操作模式。在node_modules插件的幫助下,切換回傳統(tǒng) node_modules 方法只需要一行配置。

此外,隨著時(shí)間的推移,JavaScript 生態(tài)系統(tǒng)為 PnP 提供了越來越多的支持,正如您在此兼容性表中所見,一些大型項(xiàng)目已經(jīng)開始采用 Yarn Berry

盡管 Yarn Berry 還很年輕,但它也已經(jīng)對(duì)包管理器領(lǐng)域產(chǎn)生了影響——pnpm 在 2020 年末采用了PnP 方法。

安裝工作流程


首先必須在每個(gè)開發(fā)人員的本地和 CI/CD 系統(tǒng)上安裝包管理器。

npm

npmNode.js 一起提供,因此不需要額外的步驟。除了為您的操作系統(tǒng)下載Node.js 安裝程序外,使用 CLI 工具管理軟件版本已成為一種常見做法。在 Node 的上下文中,Node Version Manager (nvm) 或 Volta 已成為非常方便的實(shí)用程序。

Yarn Classic 和 Yarn Berry

您可以通過不同的方式安裝 Yarn 1,例如,作為 npm 包來安裝:.$ npm i -g yarn

要從Yarn Classic 遷移到 Yarn Berry,推薦的方法是:

  • 安裝或更新 Yarn Classic 到最新的版本

  • 使用命令升級(jí)到最新的現(xiàn)代版本

    yarn set version berry

但是,在此推薦的安裝 Yarn Berry方法是通過 Corepack。

Corepack是由 Yarn Berry 的開發(fā)者創(chuàng)建的。該計(jì)劃最初被命名為包管理器管理器(pmm) ?,并在 LTS v16 中與 Node 合并。

在 Corepack 的幫助下,因?yàn)?Node 包含 Yarn ClassicYarn Berrypnpm 二進(jìn)制文件所以您不必“單獨(dú)”安裝的 npm 的替代包管理器。這些墊片允許用戶運(yùn)行 Yarn 和 pnpm 命令而無需先顯式安裝它們,也不會(huì)弄亂 Node 發(fā)行版。

Corepack 預(yù)裝了 Node.js ≥ v16.9.0。但是,對(duì)于較舊的 Node 版本,您可以使用⬇️

npm install -g corepack

在使用之前先啟用 Corepack。該示例顯示了如何在 Yarn Berry v3.1.1 中激活它。

# you need to opt-in first $ corepack enable # shim installed but concrete version needs to activated $ corepack prepare yarn@3.1.1 --activate

pnpm

您可以將 pnpm 作為 npm包來安裝: $ npm i -g pnpm。您還可以使用 Corepack 安裝 pnpm :

$ corepack prepare pnpm@6.24.2 --activate

項(xiàng)目結(jié)構(gòu)


在本節(jié)中,您將一目了然地看到不同包管理器的主要特征。您可以輕松發(fā)現(xiàn)配置特定包管理器涉及哪些文件,以及哪些文件是由安裝步驟生成的。

所有包管理器都將所有重要的元信息存儲(chǔ)在項(xiàng)目清單package.json文件中。 此外,根級(jí)別的配置文件可以被用來設(shè)置不同的私有包或者不同的依賴項(xiàng)解析配置。

在安裝步驟中,依賴項(xiàng) dependencies 被存儲(chǔ)在文件結(jié)構(gòu)中,例如 node_modules 并生成鎖定文件 locking。本節(jié)不考慮工作區(qū)設(shè)置,因此所有示例僅顯示存儲(chǔ)依賴項(xiàng)的單個(gè)位置。

npm

使用$ npm install 或較短的 $ npm i 會(huì)生成一個(gè) package-lock.json 文件和一個(gè) node_modules 文件夾。還有 .npmrc 這種可配置的文件可以放在根級(jí)別目錄里面。有關(guān) locking 文件的

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
国产又粗又长又爽又黄的视频| 桥本有菜av在线| 7777在线视频| 亚洲综合av在线播放| aa免费在线观看| 国内自拍在线观看| 日韩欧美在线免费观看视频| 中文av一区二区三区| 午夜国产一区二区三区| 欧美视频亚洲图片| 午夜一级免费视频| 妞干网在线观看视频| 亚洲国产精品久久久久婷蜜芽| www.亚洲视频.com| 中文久久久久久| 国产又大又黄又粗又爽| 99中文字幕在线| 日本黄网站色大片免费观看| 美女日批免费视频| 亚欧美一区二区三区| 成人在线免费观看av| 亚洲成熟丰满熟妇高潮xxxxx| jizz欧美激情18| 青青草精品视频在线| 九九九九九九九九| 国产对白在线播放| 男人添女人下面高潮视频| 国模杨依粉嫩蝴蝶150p| 婷婷激情综合五月天| 日韩成人三级视频| 亚洲va综合va国产va中文| 激情视频小说图片| 免费日韩视频在线观看| www.-级毛片线天内射视视| 国产女主播自拍| 一起操在线视频| av免费观看国产| www.污网站| 欧美 日韩 国产一区| 草草视频在线免费观看| 国产精品无码一本二本三本色| 欧美xxxxxbbbbb| 欧美一级黄色片视频| av影院在线播放| 免费不卡av网站| 青青青国产在线视频| 国产精品久久久久7777| www.色就是色.com| 亚洲精品高清无码视频| 久久亚洲国产成人精品无码区 | 日本网站在线看| 浮妇高潮喷白浆视频| 超级碰在线观看| 欧洲美女亚洲激情| 欧美男女交配视频| 成年人网站大全| 精品人妻一区二区三区四区在线| 男女爽爽爽视频| 久色视频在线播放| 国产又大又黄又粗又爽| 日本999视频| 992tv人人草| 欧美黄色性生活| 中文字幕视频在线免费观看| 国内自拍在线观看| 男人添女人荫蒂免费视频| 91九色国产ts另类人妖| 国产成人强伦免费视频网站| 九九久久久久久| 偷拍盗摄高潮叫床对白清晰| 噼里啪啦国语在线观看免费版高清版| 高清欧美精品xxxxx| 免费一级淫片aaa片毛片a级| 麻豆一区二区三区在线观看| 18视频在线观看娇喘| 日韩不卡一二区| www污在线观看| 自拍日韩亚洲一区在线| 成人免费aaa| 亚欧在线免费观看| 九九九九九国产| 婷婷视频在线播放| 日韩精品一区二区免费| 一二三四视频社区在线| 各处沟厕大尺度偷拍女厕嘘嘘| 欧美视频第一区| 免费成人黄色大片| 黄色a级片免费看| 国产精品-区区久久久狼| 欧美男女交配视频| 五月天在线免费视频| av免费观看网| 欧美大尺度做爰床戏| 国产一级大片免费看| 国模无码视频一区二区三区| 国产又大又黄又猛| 性生活免费观看视频| 欧美黄网站在线观看| 国产精品久久久久久久av福利| 国产精品无码电影在线观看| 波多野结衣家庭教师在线播放| 国产小视频精品| 美女扒开大腿让男人桶| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 中文字幕永久有效| 337p粉嫩大胆噜噜噜鲁| 黄色www在线观看| 日韩avxxx| 日韩人妻一区二区三区蜜桃视频| 国产深夜男女无套内射| 色戒在线免费观看| 久久国产色av免费观看| 国产av熟女一区二区三区| 亚洲午夜精品一区| 人人爽人人av| 久久久免费视频网站| 97在线免费视频观看| 爱豆国产剧免费观看大全剧苏畅 | 亚洲色婷婷久久精品av蜜桃| 女人另类性混交zo| 久草视频国产在线| 国产又粗又硬又长| 欧美丝袜在线观看| 一级特黄性色生活片| 国产精品秘入口18禁麻豆免会员| 香港三级日本三级a视频| 亚洲欧美手机在线| 99九九99九九九99九他书对| 国产aaaaa毛片| 亚洲人成无码www久久久| 午夜肉伦伦影院| 成人午夜视频免费在线观看| 欧美色图另类小说| 成年人免费大片| 任你操这里只有精品| mm1313亚洲国产精品无码试看| 久久国产精品视频在线观看| 丰满少妇大力进入| 国产妇女馒头高清泬20p多| 少妇人妻大乳在线视频| 久在线观看视频| 精品久久久噜噜噜噜久久图片 | 欧美精品aaaa| 伊人网在线综合| 精品91一区二区三区| 福利视频免费在线观看| 日本阿v视频在线观看| 国产中文字幕视频在线观看| 成熟老妇女视频| 91小视频在线播放| 日韩一级特黄毛片| 国产成人亚洲精品无码h在线| 91蝌蚪视频在线观看| 色黄视频免费看| 国内精品在线观看视频| 亚洲一二三区av| 欧美三级午夜理伦三级老人| 欧美乱大交xxxxx潮喷l头像| 国产日韩成人内射视频| 亚洲精品免费一区亚洲精品免费精品一区| 亚洲综合在线一区二区| 波多野结衣乳巨码无在线| 少妇人妻互换不带套| 免费观看中文字幕| 欧美aⅴ在线观看| 五月天av影院| 欧洲熟妇精品视频| 久久99久久99精品| 伊人网在线综合| 夫妻免费无码v看片| 午夜xxxxx| 日韩免费高清在线| 日韩a级黄色片| 欧美特黄aaa| www黄色av| 国产美女在线一区| 中文字幕一区二区三区四区五区人| 日本少妇高潮喷水视频| 日本老太婆做爰视频| 日本黄大片一区二区三区| 免费看又黄又无码的网站| 日本黄色播放器| 国产原创精品在线| 欧美 日韩 国产 高清| 午夜啪啪福利视频| www.com污| 色婷婷狠狠18| 黄色国产小视频| av片中文字幕| 欧美日韩国产精品激情在线播放| 国产在线无码精品| 黄色一级片网址| 国产一级片中文字幕| 小明看看成人免费视频| 另类小说第一页| 中文字幕第80页| 日韩不卡一二三| 亚洲制服中文字幕| 中文字幕在线视频一区二区三区| www.涩涩涩|