我有一个依赖于子工作区 B 的父工作区 A。我正在使用 PnP。
如果我yarn install
在 A 的目录中运行,.pnp.cjs
则会创建该文件。这是意料之中的,因为我需要确保当包 A 和 B 依赖于第三方包graphql-js
时,A 运行时只加载一个 graphql-js 实例,否则会发生这种情况。
但是,也许我有单元测试或一些我想直接在项目 B 中运行的纱线脚本。当我尝试运行脚本时,它会抱怨:Usage Error: The project in B/package.json doesn't seem to have been installed - running an install there might help
. 好的,好的,所以我yarn install
在B的目录中运行,它在目录中创建了一个.pnp.cjs
文件。然后我尝试在 B 中再次运行测试/脚本:
Error: Unable to locate pnpapi, the module 'B/[file]' is controlled by multiple pnpapi instances.
This is usually caused by using the global cache (enableGlobalCache: true)
Controlled by:
B/.pnp.cjs
A/.pnp.cjs
如何在 B 中运行单元测试或脚本,这需要 B 有自己的 .pnp.cjs 文件,并且仍然具有由 A 控制的依赖项,以避免在 A 运行时出现多个 3rd-party 包实例?