出身高貴,野心勃勃的的包管理器 yarn

2021-10-04 01:35:57 字數 2184 閱讀 1414

yarn 官網:

yarn 是由facebook、google、exponent 和 tilde 聯合推出了乙個新的 js 包管理工具,它仍然使用 npm 的registry,不過提供了全新 cli 來對包進行管理

過去,yarn 的出現極大的搶奪了 npm 的市場,甚至有人戲言,npm 只剩下乙個 registry 了。

之所以會出現這種情況,是因為在過去,npm 存在下面的問題:

控制台輸出繁雜:過去,npm 安裝包的時候,每安裝乙個依賴,就會輸出依賴的詳細資訊,導致一次安裝有大量的資訊輸出到控制台,遇到錯誤極難檢視

工程移植問題:由於 npm 的版本依賴可以是模糊的,可能會導致工程移植後,依賴的確切版本不一致。

針對上述問題,yarn 從誕生那天就已經解決,它用到了以下的手段:

不僅如此,yarn還優化了以下內容:

yarn 的出現給 npm 帶來了巨大的壓力,很快,npm 學習了 yarn 先進的理念,不斷的對自身進行優化,到了目前的npm6版本,幾乎完全解決了上面的問題:

總結

npm6 之後,可以說npm已經和yarn非常接近,甚至沒有差距了。很多新的專案,又重新從yarn轉回到npm。

這兩個包管理器是目前的主流,都必須要學習。

初始化

初始化:yarn init [--yes/-y]

安裝

新增指定包:yarn [global] add package-name [--dev/-d] [--exact/-e]

安裝package.json中的所有依賴:yarn install [--production/--prod]

指令碼和本地cli

執行指令碼:yarn run 指令碼名

start、stop、test可以省略run

執行本地安裝的cli:yarn run cli名

查詢

檢視bin目錄:yarn [global] bin

查詢包資訊:yarn info 包名 [子欄位]

列舉已安裝的依賴:yarn [global] list [--depth=依賴深度]

yarn的list命令和npm的list不同,yarn輸出的資訊更加豐富,包括頂級目錄結構、每個包的依賴版本號

更新

列舉需要更新的包:yarn outdated

更新包:yarn [global] upgrade [包名]

解除安裝

解除安裝包:yarn remove 包名

在終端命令上,yarn不僅僅是對npm的命令做了乙個改名,還增加了一些原本沒有的命令,這些命令在某些時候使用起來非常方便

yarn check

使用yarn check命令,可以驗證package.json檔案的依賴記錄和lock檔案是否一致

這對於防止篡改非常有用

yarn audit

使用yarn audit命令,可以檢查本地安裝的包有哪些已知漏洞,以**的形式列出,漏洞級別分為以下幾種:

yarn why

使用yarn why 包名命令,可以在控制台列印出為什麼安裝了這個包,哪些包會用到它

yarn create

非常有趣的命令

今後,我們會學習一些腳手架,所謂腳手架,就是使用乙個命令來搭建乙個工程結構

過去,我們都是使用如下的做法:

全域性安裝腳手架工具

使用全域性命令搭建腳手架

因此,可以使用yarn create命令來一步完成安裝和搭建

例如:# 等同於下面的兩條命令