yarn 的優(yōu)勢(shì)
yarn 是 facebook 在 2016年10月11日發(fā)布到 JavaScript 包管理工具。yarn 的優(yōu)勢(shì)可以總結(jié)為:更快、更穩(wěn)定、更友好。
1 更快
- npm 是按照隊(duì)列安裝每一個(gè)包,前一個(gè)包會(huì)阻塞后一個(gè)包的安裝。yarn 是并行安裝,速度更快。
- 如果安裝過(guò)某個(gè)包,yarn 會(huì)從本機(jī)離線安裝,無(wú)需再次下載
- yarn 也是可以使用淘寶源。通過(guò)設(shè)置
~/.npmrc就可以使用。npmrc配置文件中的具體內(nèi)容參考解決 npm install electron 卡在 node install.js 的問(wèn)題 。
2 更穩(wěn)定
yarn 會(huì)鎖定版本。本次安裝的包,yarn 會(huì)在當(dāng)前項(xiàng)目目錄下生成 yarn.lock 文件,記錄下準(zhǔn)確的包版本,下次安裝時(shí)能夠原汁原味的還原。為什么要求強(qiáng)調(diào)這個(gè)原版還原。因?yàn)?npm install 安裝一個(gè)包,會(huì)在 package.json 中得到一個(gè)帶向上箭頭的版本號(hào) "^2.3.0",這代表在 2.X.X 大版本中的最新版本,而如果這個(gè)大版本中的內(nèi)容變動(dòng)比較大,往往就會(huì)引起版本的問(wèn)題。受到 yarn 的壓力,從 npm 5 開始也會(huì)自動(dòng)生成一個(gè)版本鎖定文件 package-lock.json。
3 更友好
個(gè)人感覺(jué) npm 產(chǎn)生的 warning 更多,而且 yarn 的安裝信息簡(jiǎn)短明確。
比如安裝一個(gè)包,如果沒(méi)有在 package.json 中設(shè)置 description 和 repository 也會(huì)被 npm 發(fā)警告。
> npm install babel-preset-es2015
npm WARN deprecated babel-preset-es2015@6.24.1: ???? Thanks for using Babel: we recommend using babel-preset-env now: please read babeljs.io/env to update!
npm WARN tmp@1.0.0 No description
npm WARN tmp@1.0.0 No repository field.
+ babel-preset-es2015@6.24.1
added 65 packages in 8.547s
而 yarn 即使沒(méi)有 yarn.lock 文件,也就是給一個(gè) info 提示一下,而且 emoji 的信息用得也挺好。
> yarn add babel-preset-es2015
yarn add v1.3.2
info No lockfile found.
[1/4] ?? Resolving packages...
warning babel-preset-es2015@6.24.1: ???? Thanks for using Babel: we recommend using babel-preset-env now: please read babeljs.io/env to update!
[2/4] ?? Fetching packages...
[3/4] ?? Linking dependencies...
[4/4] ?? Building fresh packages...
success Saved lockfile.
success Saved 69 new dependencies.
? Done in 6.54s.
yarn 的使用
1 安裝 yarn
直接使用 npm 全局安裝 yarn 即可
npm install -g yarn
雖然官方推薦使用 Homebrew 用如下方式安裝 yarn。
brew install
但是 npm 安裝方便又快捷,一行命令即可,何必去安裝 Homebrew,畢竟 Homebrew 自身的安裝與安裝包,如果沒(méi)有更換為國(guó)內(nèi)的清華源或者中科大源等國(guó)內(nèi)源,速度極其慢。
2 安裝與刪除 npm 包
yarn 與 npm 的對(duì)比
- 根據(jù) package.json 安裝依賴包
yarn install
npm install
- 當(dāng)前目錄下安裝
npm install <package_name>
yarn add <package_name>
- 安裝指定版本
npm install <package_name>@2.3.0
yarn add <package_name>@2.3.0
- 當(dāng)前目錄下的開發(fā)依賴中安裝
yarn add <package_name> --dev
npm install <package_name> --save-dev
- 全局安裝
yarn global add <package_name>
npm install <package_name> --g
- 刪除
yarn remove <package_name>
npm uninstall <package_name>
3 初始化項(xiàng)目與運(yùn)行腳本命令
初始化項(xiàng)目
yarn init
初始化后產(chǎn)生的 package.json 與npm init的結(jié)果類似,唯一就是scripts這個(gè)鍵名需要自己添加。運(yùn)行腳本命令
yarn run <script>
與npm run類似。