此篇以npm為主來介紹,整理速度 pnpm > yarn > npm。
Yarn是一個新的套件管理工具,安裝速度比npm快很多,是 Facebook 自家團隊與 Exponent、 Google、Tilde 所合作開發的套件管理工具。
npm | yarn | 功能 |
---|---|---|
npm install | yarn install | 安裝 package 所有依賴 |
npm install –save [package] | yarn add [paakage] | 安裝套件 |
npm install –save-dev [package] | yarn add [paakage] –dev | 安裝套件至開發環境 |
npm –g [package] | yarn global add [package] | 安裝全域套件 |
npm update –save | yarn upgrade | 升級套件版本 |
npm uninstall –save [package] | yarn remove [package] | 移除套件 |
npm uninstall –save-dev [package] | yarn remove [package] | 移除套件 |
macOS 的用戶要透過 brew 來安裝 yarn,Homebrew 是一款自由及開放原始碼的軟體套件管理系統,用以簡化 Mac OS X系統上的軟體安裝過程。
apt-get 是 Linux 上的一個重要的工具,很多軟件的安裝、卸載、更新都會用到它。Homebrew 就是 Mac 上的 apt-get。 但是,目前 Mac 上默認是沒有這個工具的。
brew update
brew install yarn
npm install yarn --g
離線模式
yarn會有一個快取目錄,會快取以前安裝過的軟體包,再次安裝時就不必從網路下載了,大大加速安裝速度。
依賴關係確定性
npm在執行安裝套件都會依賴別的套件版本,導致有重新安裝的問題,yarn在安裝時依賴結構是一致的
網路效能優化
yarn在安裝套件時會優化請求順序。
網路回彈
yarn在某個安裝包請求失敗時不會導致安裝失敗,它會自動去嘗試重新安裝。而npm則會毫不猶豫的失敗,導致得再來一次,耗費時間
扁平模式
對於多個包依賴同一個子包的情況,yarn會盡量提取為同一個包,防止出現多處副本,浪費空間。比如1.2中,yarn會為babel-generator和babel-helper-define-map 建立同一個lodash子依賴,這樣就節約一份的空間。
pnpm是一個新的套件管理工具(官網),安裝速度快、有效利用空間。
npm | yarn | 功能 |
---|---|---|
npm install | pnpm install | 安裝 package 所有依賴 |
npm install –save [package] | pnpm install [paakage] -S | 安裝套件 |
npm install –save-dev [package] | pnpm install [paakage] -D | 安裝套件至開發環境 |
npm install –g [package] | pnpm install –g [package] | 安裝全域套件 |
npm update –save | pnpm update | 升級套件版本 |
npm uninstall –save [package] | pnpm uninstall [package] | 移除套件 |
npm uninstall –save-dev [package] | pnpm uninstall [package] | 移除套件 |
使用 npm 安裝 npm i -g pnpm
有效利用空間
支持monorepo
安全性高