新一代包管理工具yarn

wuho5596 8年前發布 | 56K 次閱讀 Yarn(包管理器)

yarn

非死book發布的新一代包管理工具,旨在解決以往使用npm作為包管理會遇到的一些問題。從其官方介紹可以看到其重點強調的3個點:快、可靠、安全。

yarn擁有以下6個特性:

  • 離線模式: 一次安裝,永久使用,無需下載

  • 依賴確定性:安裝依賴鎖定,保證一致性

  • 更好的網絡性能:下載包,優化網絡請求,最大限度提高網絡利用率

  • 多注冊來源處理:不管依賴包被不同的庫間接關聯引用多少次,安裝這個包時,只會從一個注冊來源去裝(npm/bower), 防止出現混亂不一致。

  • 網絡彈性處理: 安裝依賴時,不會因為某個單次網絡請求的失敗導致整個安裝掛掉。當請求失敗時會進行自動重試。

  • 扁平模式: 當關聯依賴中包括對某個軟件包的重復引用,在實際安裝時將盡量避免重復的創建

安裝方法

  • 安裝方式1: Npm i -g yarn

  • 安裝方式2: window下載msi,linux 和 mac 上使用 shell 指令來安裝(依賴Node)

使用方法

yarn的命令基本跟npm的大同小異,使用yarn init生成package.json文件,用yarn add 和 yarn add —dev 分別替換 npm install --save 和 npm install --dev 命令即可。

執行yarn / yarn install 解析package.json時,分為4個步驟:

  • 依賴關系解析:yarn在解析package.json文件時,會對其每個依賴包進行遍歷分析生成yarn.lock文件。該文件描述了項目中每個包以及每個包中所依賴的包的版本信息。

  • 包下載:根據第一步中解析的結果下載特定版本的包。如果該包曾經被下載過,則跳過此次的下載操作,直接使用本地緩存,即yarn的離線模式特性。

  • 包關聯:關聯拷貝下載或者緩存在全局的包到項目。

  • 包編譯:編譯項目中使用到的包。

  • yarn.lock(該文件用于鎖定包版本已保障每次編譯的結果一致,也可通過yarn install --no-lockfile 命令設置不生成yarn.lock文件):

yarn & npm 常用命令比較

  • npm install === yarn / yarn install
  • npm install xxx —save === yarn add xxx
  • npm uninstall xxx —save === yarn remove xxx
  • npm install xxx —save-dev === yarn add xxx —dev
  • npm update === yarn upgrade
  • npm install xxx -g === yarn global add xxx

當然,在比較選擇yarn與npm時,速度也是一個很重要的衡量指標。

yarn & npm 速度比較

使用注意

  • yarn 原倉庫 包下載不 穩定 需要設置倉庫為tnpm 或在 cnpm

    yarn config set registry “https://registry.npm.taobao.org”
  • script run 有時會存在異常問題

總結

  • yarn 相比 npm 最直觀優勢就是快

  • 目前項目在基本可以無痛遷移使用。

  • yarn 目前并不是非常穩定,不少反饋script run以及下載包有問題。

  • lock功能具有雙面性,是否鎖定版本需要看具體情況而定

 

來自:http://imweb.io/topic/581f6c0bf2e7e042172d618a

 

 本文由用戶 wuho5596 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!