Yarn 是 Facebook 发布的新一代包管理工具,旨在解决以往使用 npm 作为包管理会遇到的一些问题。特点:快 、可靠 、安全 。
Yarn 的优点?
- 速度快 。速度快主要来自以下两个方面: 1. 并行安装:无论 npm 还是 Yarn 在执行包的安装时,都会执行一系列任务。npm 是按照队列执行每个 package,也就是说必须要等到当前 package 安装完成之后,才能继续后面的安装。而 Yarn 是同步执行所有任务,提高了性能。 2. 离线模式:如果之前已经安装过一个软件包,用 Yarn 再次安装时之间从缓存中获取,就不用像 npm 那样再从网络下载了。
- 安装版本统一:为了防止拉取到不同的版本,Yarn 有一个锁定文件 (lock file) 记录了被确切安装上的模块的版本号。每次只要新增了一个模块,Yarn 就会创建(或更新)yarn.lock 这个文件。这么做就保证了,每一次拉取同一个项目依赖时,使用的都是一样的模块版本。npm 其实也有办法实现处处使用相同版本的 packages,但需要开发者执行 npm shrinkwrap 命令。这个命令将会生成一个锁定文件,在执行 npm install 的时候,该锁定文件会先被读取,和 Yarn 读取 yarn.lock 文件一个道理。npm 和 Yarn 两者的不同之处在于,Yarn 默认会生成这样的锁定文件,而 npm 要通过 shrinkwrap 命令生成 npm-shrinkwrap.json 文件,只有当这个文件存在的时候,packages 版本信息才会被记录和更新。
- 更简洁的输出:npm 的输出信息比较冗长。在执行 npm install 的时候,命令行里会不断地打印出所有被安装上的依赖。相比之下,Yarn 简洁太多:默认情况下,结合了 emoji 直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。
- 多注册来源处理: 所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。
- 更好的语义化: yarn 改变了一些 npm 命令的名称,比如 yarn add/remove,感觉上比 npm 原本的 install/uninstall 要更清晰。
常用命令
执行 yarn / yarn install
解析 package.json
时,分为 4 个步骤:
- 依赖关系解析:yarn 在解析 package.json
文件时,会对其每个依赖包进行遍历分析生成 yarn.lock
文件。该文件描述了项目中每个包以及每个包中所依赖的包的版本信息。
- 包下载:根据第一步中解析的结果下载特定版本的包。如果该包曾经被下载过,则跳过此次的下载操作,直接使用本地缓存,即
yarn 的离线模式特性。
- 包关联:关联拷贝下载或者缓存在全局的包到项目。
- 包编译:编译项目中使用到的包。
yarn.lock(该文件用于锁定包版本已保障每次编译的结果一致,也可通过 yarn install --no-lockfile 命令设置不生成 yarn.lock 文件)
yarn & npm 常用命令对比 Yarn 的命令基本跟 npm
的大同小异, 使用 yarn init
生成 package.json 文件, 用
yarn add
和 yarn add --dev
分别替换
npm install --save
和npm install --dev
命令即可。
NPM | YARN | 说明 |
---|---|---|
npm init | yarn init | 初始化某个项目 |
npm install/link | yarn install/link | 默认的安装依赖操作 |
npm install taco —save | yarn add taco | 安装某个依赖,并且默认保存到 package. |
npm uninstall taco —save | yarn remove taco | 移除某个依赖项目 |
npm install taco —save-dev | yarn add taco —dev | 安装某个开发时依赖项目 |
npm update taco —save | yarn upgrade taco | 更新某个依赖项目 |
npm install taco --global | yarn global add taco | 安装某个全局依赖项目 |
npm publish/login/logout | yarn publish/login/logout | 发布 / 登录 / 登出,一系列 NPM Registry 操作 |
npm run/test | yarn run/test | 运行某个命令 |
设置国内源
yarn 原仓库包下载不稳定时需要设置国内源
1 | yarn config set registry "https://registry.npm.taobao.org" |
Backlinks:
- Yarn 简介