假设我对 Javascript monorepo 有以下限制
\n-- module a\n package.json\n-- module b\n package.json\npackage.json\nRun Code Online (Sandbox Code Playgroud)\n模块 A 和模块 B 都依赖于 lodash。
\n使用pnpm,有什么方法可以确保它们都使用相同版本的lodash?就像在根目录中安装 lodash 并说“使用工作空间根目录中的任何版本”一样?
\nPS 我知道 pnpm 允许 或 工作区,但根据我的理解(这可能是错误的),只有当依赖项已经是 monorepo \xe2\x80\x94 中的模块而不是第 3 方依赖项时才使用它。
\n您可以使用overrides您的字段package.json来实现此目的。
https://pnpm.io/package_json#pnpmoverrides
{
"pnpm": {
"overrides": {
"lodash": "4.17.20"
}
}
}
Run Code Online (Sandbox Code Playgroud)
Yarn 中也存在类似的功能,称为resolutions. 显然存在一些差异,尽管我不熟悉具体细节。该功能已添加到此处。
syncpack如果该overrides解决方案不适合您,您也可以尝试。在我的组织中,我们正在慢慢解决syncpack仅由我们的 monorepo 包请求依赖项的问题;这样做的理由是随着时间的推移积累了太多的覆盖。
但为了确保依赖项的版本,overrides仍然是您所需要的。
例如,如果您安装react-dom并且它取决于scheduler并且由于某种原因您需要特定版本scheduler,那么该overrides方法是您唯一的选择 -syncpack无法提供帮助。
| 归档时间: |
|
| 查看次数: |
4046 次 |
| 最近记录: |