为什么 pnpm 在顶层链接某些依赖项?

4 pnpm

如果我跑:

pnpm install eslint
Run Code Online (Sandbox Code Playgroud)

然后我的node_modules目录最终包含:

node_modules
  .bin/
  .pnpm/
  @eslint/eslintrc
  eslint
  eslint-scope
  eslint-utils
  eslint-visitor-keys
  .modules.yaml
Run Code Online (Sandbox Code Playgroud)

我似乎找不到任何特别的地方eslint或其依赖关系会导致这种情况,但也许我没有找到正确的地方。

唯一有意义的是 pnpm 将这些依赖项提升到顶部仅仅是因为它们以我实际安装的包的名称为前缀。但这似乎确实不对。

我在这里缺少什么?

小智 5

万一其他人遇到了这个令人头疼的问题:

答案很简单,public-hoist-patterncontains的默认值*eslint*,因此所有与 eslint 相关的模块都是特殊情况的。

请参阅: https: //pnpm.io/npmrc#public-hoist-pattern