yarn 學習總結

yarn 簡介

yarn 官網:https://www.yarnpkg.com/zh-Hans/

yarn 是由Facebook、Google、Exponent 和 Tilde 聯合推出了一個新的 JS 包管理工具,它仍然使用 npm 的registry,不過提供了全新 CLI 來對包進行管理

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

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

  • 依賴目錄嵌套層次深:過去,npm 的依賴是嵌套的,這在 windows 系統上是一個極大的問題,由於衆所周知的原因,windows 系統無法支持太深的目錄
  • 下載速度慢
    • 由於嵌套層次的問題,所以npm對包的下載只能是串行的,即前一個包下載完後纔會下載下一個包,導致帶寬資源沒有完全利用
    • 多個相同版本的包被重複的下載
  • 控制檯輸出繁雜:過去,npm 安裝包的時候,每安裝一個依賴,就會輸出依賴的詳細信息,導致一次安裝有大量的信息輸出到控制檯,遇到錯誤極難查看
  • 工程移植問題:由於 npm 的版本依賴可以是模糊的,可能會導致工程移植後,依賴的確切版本不一致。

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

  • 使用扁平的目錄結構
  • 並行下載
  • 使用本地緩存
  • 控制檯僅輸出關鍵信息
  • 使用yanr-lock文件記錄確切依賴

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

  • 增加了某些功能強大的命令
  • 讓既有的命令更加語義化
  • 本地安裝的CLI工具可以使用 yarn 直接啓動
  • 將全局安裝的目錄當作一個普通的工程,生成package.json文件,便於全局安裝移植

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

  • 目錄扁平化
  • 並行下載
  • 本地緩存
  • 使用package-lock記錄確切依賴
  • 增加了大量的命令別名
  • 內置了npx,可以啓動本地的CLI工具
  • 極大的簡化了控制檯輸出

總結

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

yarn 的核心命令

  1. 初始化

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

  1. 安裝

添加指定包:yarn [global] add package-name [--dev/-D] [--exact/-E]

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

  1. 腳本和本地CLI

運行腳本:yarn run 腳本名

start、stop、test可以省略run

運行本地安裝的CLI:yarn run CLI名

  1. 查詢

查看bin目錄:yarn [global] bin

查詢包信息:yarn info 包名 [子字段]

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

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

  1. 更新

列舉需要更新的包:yarn outdated

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

  1. 卸載

卸載包:yarn remove 包名

yarn 的特別禮物

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

  1. yarn check

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

這對於防止篡改非常有用

  1. yarn audit

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

  • INFO:信息級別
  • LOW: 低級別
  • MODERATE:中級別
  • HIGH:高級別
  • CRITICAL:關鍵級別
  1. yarn why

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

  1. yarn create

非常有趣的命令

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

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

  1. 全局安裝腳手架工具
  2. 使用全局命令搭建腳手架

由於大部分腳手架工具都是以create-xxx的方式命名的,比如react的官方腳手架名稱爲create-react-app

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

例如:

yarn create react-app my-app
# 等同於下面的兩條命令
yarn global add create-react-app
create-react-app my-app

來源:渡一教育

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章