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