gpt4 book ai didi

monorepo - pnpm -- 依赖的同步版本

转载 作者:行者123 更新时间:2023-12-05 02:01:57 25 4
gpt4 key购买 nike

假设我对 Javascript monorepo 有以下限制

-- module a
package.json
-- module b
package.json
package.json

模块 A 和模块 B 都依赖于 lodash。

对于 pnpm,有没有办法确保它们都使用相同版本的 lodash?比如在根目录中安装 lodash 并说“使用工作区根目录中的任何版本”?

附言我知道 pnpm 允许或工作区,但据我了解(这可能是错误的),只有当依赖项已经是 monorepo 中的模块时才使用它——不适用于第 3 方依赖项。

最佳答案

您可以使用 package.json 中的 overrides 字段来实现此目的。

https://pnpm.io/package_json#pnpmoverrides

{
"pnpm": {
"overrides": {
"lodash": "4.17.20"
}
}
}

Yarn 中存在类似的功能,称为 resolutions。显然有一些差异,虽然我不熟悉细节。 The feature was added here.

更新 - 替代方法

你也可以试试syncpack如果 overrides 解决方案不适合您。在我的组织中,我们正在慢慢转向 syncpack 以解决仅由我们的 monorepo 包请求依赖项的问题;这样做的理由是随着时间的推移积累了太多的覆盖。

但是为了确保依赖的依赖版本,overrides 仍然是你所需要的。

例如如果你安装了 react-dom 并且它依赖于 scheduler 并且出于某种原因你需要一个特定版本的 scheduler ,那么 覆盖 方法是您唯一的选择 - syncpack 对此无能为力。

关于monorepo - pnpm -- 依赖的同步版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66181636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com