可以使用 pnpm 只使用一个包版本吗?

Possible to use only one package version using pnpm?

我需要使用 apollo-servergraphql-upload 来处理文件上传。这与旧的 graphql-upload v9 的预期一样有效。更新到最新的 v11 会导致上传失败。简而言之,问题是 apollo-server(和 @nestjs/graphql)依赖于旧的 graphql-upload v8。 (For those, who are interested in more) 为了使一切正常,我的项目中应该只有一个版本 (v11)。

我正在使用 pnpm。列出哪些包正在使用 graphql-upload 我得到以下信息:

@nestjs/graphql 7.9.1
├─┬ @apollo/gateway 0.17.0
│ └─┬ apollo-server-core 2.19.0
│   └── graphql-upload 8.1.0      // <--
├─┬ apollo-server-core 2.16.1
│ └── graphql-upload 8.1.0        // <--
└─┬ apollo-server-testing 2.19.0
  └─┬ apollo-server-core 2.19.0
    └── graphql-upload 8.1.0      // <--
apollo-server 2.19.0
├─┬ apollo-server-core 2.19.0
│ └── graphql-upload 8.1.0        // <--
└─┬ apollo-server-express 2.19.0
  └─┬ apollo-server-core 2.19.0
    └── graphql-upload 8.1.0      // <--
graphql-upload 9.0.0              // <-- only working if <v10

您可以使用 pnpm overrides。在您的情况下,您可以将其添加到 package.json:

{
  "pnpm": {
    "overrides": {
      "graphql-upload": "11"
    }
  }
}

添加或更改这些覆盖后,只需 运行 pnpm install 和 pnpm 将相应地更新您的 node_modules。