您好,登錄后才能下訂單哦!
今天小編給大家分享一下Yarn與npm的命令有哪些的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
以前,一個簡單的文本編輯器足以讓開發人員創建和管理他們的大部分項目。但隨著技術的發展,Web 也發生了巨大的變化。如今,即使是一個相當簡單的項目有成百上千個腳本也是很常見的,而且還具有復雜的嵌套依賴項。如果沒有某種自動化工具,這些腳本根本無法管理。這就是包管理器發揮作用的地方。
一個包管理器是一種工具,以各種不同的方式自動處理項目的依賴。例如,在包管理器的幫助下,我們可以安裝、卸載、更新和升級包,配置項目設置,運行腳本等。所有艱苦而乏味的工作都由包管理器完成,只剩下有趣的部分——編碼本身。
npm代表節點包管理器。它于 2010 年發布,開啟了 Web 開發的新時代。在此之前,項目依賴項是手動下載和管理的。npm 是將 Web 推向新高度的魔杖。
npm 實際上涉及三件事:
一個用于管理 npm 體驗各個方面的網站
一個注冊表訪問的JavaScript包的廣泛公共數據庫
用于通過終端與 npm 交互的命令行界面(CLI)
然而,當大多數人談論 npm 時,他們通常指的是最后一個——CLI 工具。它作為默認包管理器隨每個新的 Node 安裝一起提供。這意味著您可以立即開始使用它。
如果您想深入了解如何使用 npm,請參閱我們的NPM 教程。
Yarn
代表另一個資源管理器。Yarn 包管理器是 npm 的替代品,由 Facebook 于 2016 年 10 月發布。 Yarn 的最初目標是處理 npm 的缺點,例如性能和安全問題。Yarn 很快被定位為安全、快速、可靠的 JavaScript 依賴管理工具。
但是 npm 團隊吸取了教訓,并通過實現缺失的功能迅速填補了 npm 的空白。
讓我們快速穿越時空,看看大圖:
2010 年:npm 發布,支持 Node.js。
2016 年:發布紗線。它顯示出比 npm 更高的性能。它還生成一個yarn.lock文件,使 repos 的共享和精確復制變得更加容易和可預測。
2017 年:npm 5 發布。它提供自動生成package-lock.json文件以響應yarn.lock.
2018 年:npm 6 發布,提高了安全性。現在 npm 在安裝依賴項之前檢查安全漏洞。
2020 年:Yarn 2 和 npm 7 發布。這兩個軟件包都帶有很棒的新功能,我們將在本教程后面看到。
2021 年:Yarn 3 發布并進行了各種改進。
如今,這兩個包管理器在包管理競賽中并駕齊驅,提供相似的特性和功能。但是仍有一些差異有助于確定我們選擇使用哪個。
在本教程的其余部分,我們將探討 npm 和 Yarn 之間的主要異同。
我們將從 npm 和 Yarn 的安裝過程開始我們的比較探索。
正如我上面提到的,npm 預裝了 Node,所以不需要手動安裝 npm。
相比之下,Yarn 需要顯式安裝。首先,我們需要全局安裝 Yarn:
npm install -g yarn
然后,我們可以通過在我們的項目中設置所需的版本,在每個項目的基礎上使用它。我們通過yarn set version在項目的根目錄中運行命令來做到這一點:
yarn set version berry
在這種情況下,berry是我們要設置的版本。
如果我們想更新到最新版本,我們運行:
yarn set version latest
使用 Yarn,我們可以為每個項目使用不同的版本。
要對 npm 執行相同操作,您需要安裝nvm
(節點版本管理器)。以下是如何使用 nvm
安裝多個版本的 Node。
現在,讓我們看看如何安裝項目依賴項。
當我們運行時npm install
,依賴項會依次安裝,一個接一個。終端中的輸出日志信息豐富,但有點難以閱讀。
要使用 Yarn 安裝軟件包,我們運行yarn命令。Yarn 并行安裝包,這是它比 npm 更快的原因之一。如果您使用的是 Yarn 1 版本,您會看到 Yarn 輸出日志是干凈的、視覺上可區分的和簡短的。為了便于理解,它們也以樹的形式排列。但這在版本 2 和 3 中發生了變化,其中日志不是那么直觀和人類可讀。
到目前為止,我們已經看到 npm 和 Yarn 有不同的安裝包命令。在下一節中,我們將探索更多命令。
npm 和 Yarn 共享許多命令,但也有許多不同的命令。讓我們首先探索一些相同的命令:
npm init
| yarn init
: 創建一個新包
npm run
| yarn run
: 運行定義在package.json
npm test
| yarn test
: 測試一個包
npm publish
| yarn publish
: 發布包
npm cache clean
| yarn cache clean
:從緩存文件夾中刪除所有數據
這些命令使兩個管理器之間的切換變得容易,但有一些不同的命令可能會導致混淆。讓我們看看它們在下一個列表中是什么:
npm install
| yarn
: 安裝依賴
npm install [package]
| yarn add [package]
: 安裝一個包
npm install --save-dev [package]
| yarn add - -dev [package]
: 安裝一個包作為開發依賴
npm uninstall [package]
| yarn remove [package]
: 卸載一個包
npm uninstall --save-dev [package]
| yarn remove [package]
: 卸載開發依賴包
npm update
| yarn upgrade
: 更新依賴
npm update [package]
| yarn upgrade [package]
: 更新一個包
Yarn 也有一些獨特的命令,它們沒有 npm 等效項。例如,why
命令顯示需要包的原因:它可能是依賴項、本機模塊或項目依賴項。
每當 Yarn 或 npm 需要安裝包時,它們都會執行一系列任務。在 npm 中,這些任務是按包順序執行的,這意味著它會等待一個包完全安裝,然后再繼續下一個。相比之下,Yarn 并行執行這些任務,從而提高了性能。
雖然這兩個管理器都提供緩存機制,但 Yarn 似乎做得更好一些。通過實現零安裝范例,我們將在功能比較部分看到,它幾乎可以立即安裝軟件包。它緩存每個包并將其保存在磁盤上,因此在此包的下一次安裝中,您甚至不需要互聯網連接,因為該包是從磁盤離線安裝的。
盡管 Yarn 有一些優勢,但 Yarn 和 npm 在它們的最新版本中的速度相當。所以我們不能在這里定義一個干凈的贏家。
對 npm 的主要批評之一是關于安全性。以前的 npm 版本有幾個嚴重的安全漏洞。
從版本 6 開始,npm 會在安裝過程中審核軟件包并告訴您是否發現了任何漏洞。我們可以通過npm audit針對已安裝的軟件包運行來手動執行此檢查。如果發現任何漏洞,npm 會給我們安全建議。
正如你在上面的截圖中看到的,我們可以運行npm audit fix
來修復包漏洞,如果可能的話,依賴樹將被修復。
Yarn 和 npm 都使用加密哈希算法來確保包的完整性。
就像命令一樣,一些特性是 npm 和 Yarn 共享的,但也有一些不同。讓我們首先探討這兩個包管理器共享的共同功能。
在package.json
npm 和 Yarn 跟蹤項目依賴項的文件中,版本號并不總是準確的。相反,您可以定義一系列版本。這樣,您可以選擇包的特定主要和次要版本,但允許 npm 安裝可能修復某些錯誤的最新補丁。
在語義版本控制的理想世界中,補丁版本不會包含任何破壞性更改。但不幸的是,情況并非總是如此。npm 采用的策略可能會導致兩臺機器以相同的package.json文件結束,但安裝了不同版本的軟件包——這可能會引入錯誤。
為避免包版本不匹配,確切安裝的版本被固定在包鎖定文件中。每次添加模塊時,npm 和 Yarn 分別創建(或更新)一個package-lock.json和yarn.lock文件。這樣,您可以保證另一臺機器安裝完全相同的軟件包,同時仍然具有package.json.
工作區允許您擁有一個monorepo
來管理跨多個項目的依賴項。這意味著您有一個單一的頂級根包,其中包含多個稱為工作區的子包。
該npx命令用于從./node_modules/.bin.
它還允許您從 npm 注冊表中執行包,而無需將它們安裝在您的項目依賴項中。例如,您可以通過運行以下命令來創建一個新的 React 應用程序:
npx create-react-app my-app
在 Yarn 中,您可以使用等效dlx
命令獲得相同的結果:
yarn dlx create-react-app my-app
我們將要探索的其余功能是 Yarn 獨有的。
零安裝將緩存存儲在您的項目目錄中的一個.yarn文件夾中。當您使用yarn
或yarn add <package>
等命令時,Yarn 將創建一個.pnp.cjs
文件。此文件包含 Node 用于加載項目包的依賴關系層次結構。因此,您幾乎可以在零時間訪問它們。
Plug'n'Play
是另一種安裝策略。node_modulesYarn
沒有生成目錄并將解析留給 Node,而是生成一個.pnp.cjs
文件,將包映射到它們在磁盤上的位置和它們的依賴項列表。這個特性可以帶來更快的項目啟動、更好的優化依賴樹、更快的安裝時間,當然也不需要node_modules
文件夾。
Yarn 包含一個內置的許可證檢查器,當您開發應用程序時,它可以在不同的場景中使用。
我們已經介紹了 npm 和 Yarn 的各種異同,但我們還沒有確定哪個更好,我們應該選擇哪個。與以往一樣,答案取決于我們的愿望和要求。
作為一般指南,讓我總結以下建議:
如果您對當前的工作流程感到滿意,不想安裝額外的工具,并且您沒有大量磁盤空間,請選擇 npm。
如果您想要一些很棒的功能,例如 Plug'n'Play
,您需要一些 npm 中缺少的功能,并且您有足夠的磁盤空間,請選擇 Yarn。
如果你仍然很難在 npm 和 Yarn 之間做出明確的決定,那么你可以查看pnpm
,它試圖結合兩個包管理器的優點,是包管理池中的第三大魚。
以上就是“Yarn與npm的命令有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。