使用 yarn@^3.x 版本时,默认并不会安装包到 node_modules,因为 yarn@3.x 是即插即用的,也就是说如果你下载过这个包,yarn只会生成一个 Png文件,然后将包的路径 link 到下载过的地方,这样可以省去很多时间。
而用 npm install 的时候,经常失败,那是因为 node 默认找包的方式很笨拙。
但是使用 yarn 下载的包,我们经常会看到很多依赖报错问题,真是又头疼又难受,因为想使用 yarn,但是这个报错又很难解决。
下边介绍几种解决方法
-
直接安装没有明确标注的包
yarn add <报错里说没有的包名>
-
使用松散(loose)模式
为了启用loose模式,请确保该nodeLinker选项设置为pnp(默认值)并将以下内容添加到您的本地.yarnrc.yml文件中:
注意这里的 pnpFallbackMode,只将开发依赖包允许 node 回退,具体设置查看Settings (.yarnrc.yml) | Yarn
nodeLinker: pnp
pnpMode: loose
pnpFallbackMode: "dependencies-only"
-
切换成 pnp + node 模式,将下边的配置添加到根目录的 .yarn.yml 文件中,具体实现参考Recipes | Yarn
nodeLinker: node-modules
pnpIgnorePatterns:
- ./**
-
还有一种方法,在 yarn 官网中看到的,我一般用来使用第二种方法,警告的话加上这种就可以消除警告,具体查看https://yarnpkg.com/getting-started/migration/#fix-dependencies-with-packageextensions