1.cnpm存在的问题
- 之前在npm更换成淘宝镜像源以及cnpm文章中讲到过,cnpm安装一个模块,会出现2个文件夹,如果同时安装很多模块,会导致文件夹更多的问题。
- 之前在package-lock.json文章中讲到过,npm安装可以生成package-lock.json来固定版本,cnpm不支持的问题。
所以,我找到了一个包管理工具——yarn,既能避免npm下载速度过慢问题,又能避免上述cnpm存在的问题,很好的满足了我的需求。
2.包管理工具——yarn
FaceBook 开源的一个新的包管理器, 和npm的作用是一样的,但是解决了一些npm的痛点。如果上面所说的问题(cnpm文件夹过多、cnpm不支持lock文件),以及npm下载慢问题。还有其他优点我就不一一介绍了,可以参[中文文档](https://yarnpkg.com/zh-Hans/)。
3.yarn的安装
- 安装node
- 如果安装了npm,可以使用
npm install -g yarn
安装,如果没有,也可以去官网下载安装包来安装 - 安装过后
yarn -v
可以查看是否安装成功
4.yarn.lock文件
和package-lock.json文件几乎一样(包括作用、生成位置以及和package.json改动同步更新)。
只有两个区别:
- 生成方式(yarn:使用
yarn install
生成,且生成的是yarn.lock文件,npm:使用npm install
生成,且生成的是package-lock.json文件) - yarn.lock和package-lock.json格式不一样。
我大致截个图,可以看下yarn.lock格式:
5.yarn install安装的目录
使用yarn install安装后的node_modules,和使用npm install安装的node_modules基本一样,并且不存在cnpm多个文件夹的情况,不过yarn会在node_modules中多了个.yarn-integrity文件,里面记录了依赖包的来源等。
6.yarn的常用命令
npm | yarn |
---|---|
npm init | yarn init |
npm install | yarn install |
npm install --no-package-lock | yarn install --no-package-lock |
npm install xxx --save | yarn add xxx |
npm install xxx --save-dev | yarn add xxx --dev |
npm uninstall xxx --save | yarn remove xxx |
yarn add xx@version | npm install xx@vision |
yarn upgrade xx | npm update xx |
yarn upgrade xx@version | npm update xx@vision |
yarn why xx | - |
yarn config list | npm config list |
注:
-
不能使用yarn install xx,会报类似这种错
error
install
has been replaced withadd
to add new dependencies. Run "yarn add lodash" instead.` -
使用
yarn why xx
命令,可以查看xx模块为什么会别安装(即谁依赖的)。//测试moment模块 $ yarn why moment //结果 yarn why v1.16.0 [1/4] Why do we have the module "moment"...? [2/4] Initialising dependency graph... [3/4] Finding dependency... [4/4] Calculating file sizes... => Found "moment@2.24.0" info Reasons this module exists - "antd" depends on it - Hoisted from "antd#moment" - Hoisted from "antd#rc-calendar#moment" - Hoisted from "antd#rc-time-picker#moment" Done in 0.41s.