yarn 的优势
yarn 是 facebook 在 2016年10月11日发布到 JavaScript 包管理工具。yarn 的优势可以总结为:更快、更稳定、更友好。
1 更快
- npm 是按照队列安装每一个包,前一个包会阻塞后一个包的安装。yarn 是并行安装,速度更快。
- 如果安装过某个包,yarn 会从本机离线安装,无需再次下载
- yarn 也是可以使用淘宝源。通过设置
~/.npmrc
就可以使用。npmrc
配置文件中的具体内容参考解决 npm install electron 卡在 node install.js 的问题 。
2 更稳定
yarn 会锁定版本。本次安装的包,yarn 会在当前项目目录下生成 yarn.lock 文件,记录下准确的包版本,下次安装时能够原汁原味的还原。为什么要求强调这个原版还原。因为 npm install 安装一个包,会在 package.json 中得到一个带向上箭头的版本号 "^2.3.0"
,这代表在 2.X.X
大版本中的最新版本,而如果这个大版本中的内容变动比较大,往往就会引起版本的问题。受到 yarn 的压力,从 npm 5 开始也会自动生成一个版本锁定文件 package-lock.json。
3 更友好
个人感觉 npm 产生的 warning 更多,而且 yarn 的安装信息简短明确。
比如安装一个包,如果没有在 package.json 中设置 description 和 repository 也会被 npm 发警告。
> 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 自身的安装与安装包,如果没有更换为国内的清华源或者中科大源等国内源,速度极其慢。
2 安装与删除 npm 包
yarn 与 npm 的对比
- 根据 package.json 安装依赖包
yarn install
npm install
- 当前目录下安装
npm install <package_name>
yarn add <package_name>
- 安装指定版本
npm install <package_name>@2.3.0
yarn add <package_name>@2.3.0
- 当前目录下的开发依赖中安装
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
初始化后产生的 package.json 与npm init
的结果类似,唯一就是scripts
这个键名需要自己添加。 -
运行脚本命令
yarn run <script>
与npm run
类似。
网友评论