煦涵說Yarn

Yarn是一個新的Javascript包管理器,它由Facebook, Google, Exponent and Tilde開發者共同開發完成。Yarn 不是 NPM 的fork版本,而是它的從新設計,Yarn 定位爲"快速、可靠、安全的依賴管理工具",它的目標是解決團隊開發中使用 NPM 遇到的問題。javascript

圖片描述

隨着 Yarn 的誕生,愈來愈多的開發者轉向了 Yarn,那麼 NPM 在開發中有哪些問題,Yarn 是如何解決的呢?
NPM 一些潛在的問題:java

  • 嵌套依賴 (npm 3.0版本已修復)
  • 串行安裝
  • 單一個 package 來源(npmjs.com)
  • 須要網絡來安裝軟件包(儘管咱們能夠建立一個臨時緩存)
  • 容許程序包在安裝時運行代碼(不利於安全性)
  • 不肯定的包狀態(不能肯定項目的全部副本使用相同的包版本)

Yarn 解決方案:node

  • 單依賴包結構: 可使用單一版本的依賴包,安裝更快速,佔用磁盤空間更少
  • 並行安裝: 並行下載依賴包,減小下載時間
  • 多個包來源: Yarn 讀取和安裝 npmjs.com 和 Bower安裝包,若是有個渠道down掉了,能夠從另外一個渠道下載包並安裝
  • 自動重試: 單個網絡請求失敗不會致使安裝失敗,請求在失敗後會重試,這解決了因爲臨時網絡問題而產生的構建異常
  • 兼容 NPM: 從 NPM 切換到 Yarn 不須要作特殊兼容處理
  • yarn.lock: 用來管理 javascript 包,這個對於開發團隊來講多是最有用的功能了。 在package.json中,依賴的包版本能夠被指定爲一個範圍,也能夠不帶版本號。這個可能會致使一種問題,團隊內不一樣開發人員使用不一樣版本的軟件包。咱們都知道,復現環境的能力與徹底相關的依賴關係對於高校的調試和新團隊人員的融入相當重要。從包管理器(Bundler)中借鑑,Yarn 建立了 yarn.lock文件,用來記錄項目使用每一個包的確切版本。當將此文件提交至 SVN、GIT 等代碼維護工具,能夠保證項目的全部開發人員共享一套依賴包的版本號。更多文章請關注微信公衆號fedlab。

Yarn 的安裝

brew install yarn

/* Yarn 團隊不推薦 */
npm install -g yarn

不一樣平臺安裝方式各異,具體參見installnpm

NPM CLI vs Yarn CLI

  • 初始化項目
npm  init
yarn init
  • 從 package.json 安裝依賴
npm install
yarn
  • 安裝指定包到依賴或者開發依賴
npm install --save [package]
yarn add [package]

npm install --save-dev [package]
yarn add [package] [--dev/-D]
  • 安裝包到全局
npm install --global [package]
yarn global add [package]
  • 安裝指定版本的包
npm install [package]@[version]
yarn add [package]@[version]
  • 從新下載全部包
npm reubild
yarn install --force
  • 卸載包
npm uninstall [package]

npm uninstall --save [package]
yarn remove [package]

npm uninstall --save-dev [package]
  • 升級包
rm -rf node_modules && npm install
yarn upgrade

總結

相比 NPM,Yarn解決了不肯定依賴、網絡問題、並行下載等問題。然而 NPM 是本身成功的犧牲品,隨着愈來愈多的開發者轉移使用 Yarn或者其餘依賴平臺,NPM 服務器能夠更有效的使用。總之兩個包管理器都很優秀,這種相互的關係,驅使着各自彼此往更優秀的方向前進,以惠及更多的開發者。json

感謝您的閱讀緩存

--eof--安全

做者[煦涵]
2017年05月13日服務器

下面是「FED實驗室」的微信公衆號二維碼,歡迎長按、掃描關注:
關注FED實驗室微信

相關文章
相關標籤/搜索