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