Yarn3的使用
本文讨论的版本是 Yarn 3.2.0
安装
环境: Node.js >= 16.2
新版的Yarn,使用corepack管理安装资源,所以需要先启用Node.js自带的corepack:
corepack enable
然后运行以下命令,初始化目录
yarn init -2
生成的目录
.
├── .editorconfig
├── .git
├── .gitignore
├── .yarn
│ └── releases
│ └── yarn-3.2.0.cjs
├── .yarnrc.yml
├── README.md
├── package.json
└── yarn.lock
.pnp.cjs
pnp的全称是:Plug’n’Play
文件的作用
帮助Yarn管理依赖。
包含了以下信息:
- 当前依赖树中包含了哪些依赖包的哪些版本
- 依赖包之间是什么关联关系
- 依赖包的资源在文件系统中的具体位置
解决的问题
Yarn 不需要再拷贝依赖到node_module目录,从而避免大量的I/O操作。同时,项目目录也不会有node_module目录生成。
为什么可以避免大量的I/O操作?
具体要从旧版Yarn 1.*的安装依赖流程说起:
1. 将依赖包的版本区间解析为某个具体的版本号
2. 下载对应版本依赖的tar包到本地离线镜像
3. 将依赖从离线镜像解压到本地缓存
4. 将依赖从缓存拷贝到当前项目的node_module目录
可以看出,第3、4步需要进行I/O操作。而新版的Yarn,避免了第4步的拷贝动作,不需要从缓存拷贝到node_module目录。
Yarn只需要维护一张静态映射表,也即`.pnp.cjs`。
指定npm源
命令
yarn config set npmRegistryServer https://registry.npmmirror.com
手动修改
打开.yarnrc.yml
,增加下面一行语句:
npmRegistryServer: "https://registry.npmmirror.com"
Yarn 1.*
怎么指定npm源?
与npm
一样,使用.npmrc
文件中的设置。
设置私源
例如要安装@leon/**
的私源依赖包,
修改.yarnrc.yml
,加入以下语句:
npmScopes:
leon:
# 发布
npmPublishRegistry: "https://registry.leon.com"
# 安装
npmRegistryServer: "https://registry.leon.com"
解除 https 访问限制
Yarn默认只支持https协议
修改.yarnrc.yml
,加入域名白名单:
unsafeHttpWhitelist:
"*.example.org"
"example.org"