0

来自有关 yarn v2 松散模式的文档:

Yarn 带有“松散”模式,这将导致 PnP 链接器与 node-modules 提升器协同工作 - 我们将首先生成在典型 node_modules 安装中将被提升到顶层的包列表,然后记住这个列表,我们称之为“后备池”。

在运行时,如果依赖项的任何版本最终在回退池中,仍然允许需要未列出的依赖项的包访问它们(可以使用 pnpFallbackMode 调整哪些包完全被允许依赖回退池)。

那么这个“后备池”到底在哪里呢?在.yarn/cache? 我在一个有很多部门的项目中激活了松散模式,但与之前的状态相比没有发现任何差异。

4

1 回答 1

1

在松散模式下,Yarn 2 不会安装任何新的依赖项,它只会添加回退解决方案。后备池是一组可供所有依赖项使用的解决方案,它是存储在属性.pnp.js文件中的数据结构。fallbackPool您的所有依赖项都可以访问本应提升到根node_modules文件夹的依赖项。Yarn 2 通过node_modules在内存中运行安装策略并将依赖项列表提升到根node_modules文件夹来确定这一点。

请注意,与 密切相关的配置选项pnpMode: loose是一个pnpFallbackMode选项。pnpFallbackMode确定允许谁使用回退依赖项。默认情况下,只允许根项目的依赖项使用回退依赖项,不允许使用工作区依赖项。根项目和pnpFallbackMode: all工作区依赖项都可以依赖回退依赖项。pnpFallbackMode: none并且根本不允许使用with -fallback 依赖项。

松散模式对于迁移到 Yarn 2 PnP 很有用,因为 JavaScript 生态系统中的一些包严重依赖于它们可以访问提升到顶层的包这一事实node_modules。尽管他们依赖于他们不应该依赖的事实,但在松散的 PnP 模式下,Yarn 只会发出警告并让这些包工作,而不是抛出访问冲突错误。

松散模式是node_modules新旧 PnP 安装方案之间的混合,意味着更容易迁移到 PnP。

于 2020-05-23T08:37:02.863 回答