yarn 的優(yōu)勢
yarn 是 facebook 在 2016年10月11日發(fā)布到 JavaScript 包管理工具房维。yarn 的優(yōu)勢可以總結(jié)為:更快倘屹、更穩(wěn)定、更友好眼滤。
1 更快
- npm 是按照隊列安裝每一個包,前一個包會阻塞后一個包的安裝大猛。yarn 是并行安裝扭倾,速度更快。
- 如果安裝過某個包挽绩,yarn 會從本機(jī)離線安裝膛壹,無需再次下載
- yarn 也是可以使用淘寶源。通過設(shè)置
~/.npmrc
就可以使用唉堪。npmrc
配置文件中的具體內(nèi)容參考解決 npm install electron 卡在 node install.js 的問題 模聋。
2 更穩(wěn)定
yarn 會鎖定版本。本次安裝的包巨坊,yarn 會在當(dāng)前項目目錄下生成 yarn.lock 文件撬槽,記錄下準(zhǔn)確的包版本,下次安裝時能夠原汁原味的還原趾撵。為什么要求強調(diào)這個原版還原。因為 npm install 安裝一個包共啃,會在 package.json 中得到一個帶向上箭頭的版本號 "^2.3.0"
占调,這代表在 2.X.X
大版本中的最新版本,而如果這個大版本中的內(nèi)容變動比較大移剪,往往就會引起版本的問題究珊。受到 yarn 的壓力,從 npm 5 開始也會自動生成一個版本鎖定文件 package-lock.json纵苛。
3 更友好
個人感覺 npm 產(chǎn)生的 warning 更多剿涮,而且 yarn 的安裝信息簡短明確。
比如安裝一個包攻人,如果沒有在 package.json 中設(shè)置 description 和 repository 也會被 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 即使沒有 yarn.lock 文件,也就是給一個 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 自身的安裝與安裝包屑咳,如果沒有更換為國內(nèi)的清華源或者中科大源等國內(nèi)源萨赁,速度極其慢。
2 安裝與刪除 npm 包
yarn 與 npm 的對比
- 根據(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 初始化項目與運行腳本命令
初始化項目
yarn init
初始化后產(chǎn)生的 package.json 與npm init
的結(jié)果類似兆龙,唯一就是scripts
這個鍵名需要自己添加杖爽。運行腳本命令
yarn run <script>
與npm run
類似。