Yarn Introduction

Share This Post

Yarn 是一個套件管理工具,他跟 NPM 有異曲同工之妙,差別在於 Yarn 有更可愛的 Emoji 可以讓你安裝套件時,可以看看這些小 Emoji 工作,幫你完成套件的安裝٩(๑❛ᴗ❛๑)۶。

Safe, stable, reproducible projects

這是 Yarn 官方的標語,**安全、穩定、可重製性的專案。**他本身也是個 OpenSource 的專案,所以仰賴著全世界廣大的工程師讓他能更近一步,而穩定性則是官方承諾,安裝的方式在未來不會改變,保持著原有的方法。

Why Yarn ?

說這麼多,那我幹嘛要改用 Yarn ? 原生的 NPM 不也可以安裝套件管理套件嗎?

  • 速度更快! Yarn 的套件管理,使用了快取的技術,在首次下載套件時,就把套件快取起來,因次執行時花費的時間會比 NPM 更短!當你在 yarn install 的時候,也會幫你檢查已經安裝的套件,減少整體的 pkg 安裝時間。 同時,Yarn 也會使用平行式的執行序列,讓套件不是排隊被安裝,而是同步的去安裝!
  • 穩定的一致性! 透過 yarn.lock 將每個套件版本保持一致性,且保證在不同的執行平台上,能夠有同樣的效果。
  • 安全! 在每次執行前,就會驗證確保套件的完整性。
  • 個人私心! 有 Emoji 很可愛啊!!!

Installation

最基本的當然就是從安裝開始~

  1. 第一步就是知名的 install yarn by npm, 有沒有覺得很熟悉?很像是拿 IE 安裝 chrome 一樣呢呵呵 基本上官方是推薦全域安裝,來避免一些不必要的權限問題。 npm install --global yarn 但是如果你真的不想透過 npm 安裝 yarn,倒也不是沒有辦法,也能透過 brew, MacPorts….去安裝,不過缺點是有些安裝法還要再另外設定過 Path,當然想挑戰自己的人也是可以嘗試看看啦:D 下面附上官方的安裝連結,也可以照 OS 去選安裝方式說明。 Yarn
  2. 確認版本 yarn --version
  3. 更新 yarn yarn upgrade
  4. 安裝套件,後面接 package 名稱,也可以指定版本或標籤 yarn add [package] yarn add [package]@[version] yarn add [package]@[tag]
  5. 移除套件 yarn remove [package]
  6. 安裝 Package Dependency yarn install

NPM V.S. Yarn

基本上兩者的語法指令差不多,官方也有比較表

CLI commands comparison

Yarn

Yarn 2 / Berry

yarn 在 2020 年發佈了新版的 yarn 2,repo 的版本代號叫 Berry,但是他沒有強制所有的 yarn 使用者一起更新,所以我也是查了資料才知道有這個更新XD。

基本上他跟 yarn/yarn 2 是兩個很不一樣的東西,他整個觀念跟設計方式跟原先不太一樣:

  1. .yarnrc.yml 主要讀取的配置文件
  2. yarn dlx (download and execute) 基本上就像是 npm 使用的 npx 一樣,可以 Run a package in a temporary environment.
  3. node_modules 在 yarn 2 中,已經沒有 node_modules 的存在,而是利用 Zero-Installs (Plug’n’Play)的做法,統一存到 .yarn 的資料夾中,這個方式可以有效減少 node_modules 在 local 中所佔用的空間,當你有多個專案時,這些多出來的空間就顯得可觀了! 而且大家應該有經驗,有時候在 yarn install or npm install 時,會有些套件忽然出錯,不管是版本問題,或是套件本身問題,或是人為(?問題,yarn 2 改用 .yarn 的 cache 儲存方式,可以解決這些問題,讓所有 git pull, push 後的結果是一致的。
  4. TypeScript yarn 2 使用了 TypeScript 作為開發語言。
Untitled

轉換為 yarn 2

只要把 yarn 的版本指定為 berry 即可。

yarn set version berry

Yarn 1 的樣式

Untitled

Yarn 2 的樣式

Untitled

參考及延伸閱讀 Ref:

https://dev.to/arcanis/introducing-yarn-2-4eh1

https://zespia.me/blog/2020/05/10/yarn-2-and-monorepo/

https://zhuanlan.zhihu.com/p/107343333

https://jimchen5209.notion.site/Yarn-2-62f5d2ed440f48c498cc71d9702ed97f

訂閱研究文章

Get updates and learn from the best

More To Explore

Scroll to Top

hurry up !

軟體工程師培訓

限時免費報名中

藉由與「真實世界軟體專案」相同的技術、工具與開發流程,化簡成與商業機密無關、門檻較低更容易上手的「模擬專案」,讓你有機會在職場前輩的陪伴下,完成真槍實彈的練習,動手解決真實的問題,快速累積個人的經驗與作品,而不只是「學習技術」而已。