新一代包管理工具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