[Javascript] Yarn — JavaScript套件管理工具
npm的進化版
3 min readMay 19, 2017
Yarn是什麼?
如果打開Yarn的官網可以看到斗大的標題:快速、可靠、安全的依賴管理。簡單來說,Yarn是 javascript 套件管理工具 npm 的進化。
npm的問題
- 安全問題, npm 允許安裝包執行代碼。
- 巢狀依賴關係。
- 安裝套件必須排隊,很耗費時間。
- 單一來源,統一由NpmJS管理。
- 不支援離線安裝,每次都必須從線上下載一次。
那 Yarn 好在哪裡?
- 扁平結構的依賴關係。
- 可以同時安裝多個套件,某個套件安裝失敗不會影響整體。
- 可以從NpmJS 或 Bower的資源庫下載。
- 如果你已經安裝過某個套件,yarn 會建立一個 cached 拷貝。支援往後的離線安裝。
安裝 Yarn
如果原本使用 npm,可以利用 npm 安裝 yarn
$ npm install -g yarn
如果有使用 Homebrew:
$ brew install yarn
確認yarn 有正確的安裝,可以執行:
$ yarn --version
和 npm 一樣, yarn 使用 package.json 將 dependencies 存到 node_modules 資料夾。如果已經有 package.json 檔案,你可以執行 yarn
或 yarn install
安裝套件。
如果沒有,可以使用 yarn init
指令, 通過互動式對話設定、創建一個 package.json
文件。
$ yarn initquestion name (testdir): my-awesome-package
question version (1.0.0):
question description: The best package you will ever find.
question entry point (index.js):
question git repository: https://github.com/yarnpkg/example-yarn-package
question author: Yarn Contributor
question license (MIT):
success Saved package.json
✨ Done in 87.70s.
安裝dependencies
$ yarn add [package-name]
// 或添加版本
$ yarn add [package]@[version-or-tag]
// 安裝 dev dependencies
$ yarn add [package-name] --dev
升級或移除
$ yarn upgrade [package]$ yarn remove [package]
在安裝、升級或移除套件後,yarn 會更新 yarn.lock 檔案,用來追蹤已安裝套件的版本。可以將yarn.lock加到版本控制裡,保持套件版本的一致性。
移除套件裡不需要的文件
隨着套件的增加,如果遇到 node_modules 資料夾檔案過大的情形,可以使用 yarn clean
刪除不必要的文件和文件夾釋放空間。
Yarn 會創建一個 .yarnclean
文件,如果把它添加到版本控制系統,執行 yarn install
和 yarn add
時會自動完成 clean 的部分。
參考: