首页 > 解决方案 > 带有纱线工作空间的通用依赖库版本

问题描述

假设我有一个在不同工作区之间共享的外部 NPM lib 依赖项,是否可以为所有相关工作区设置一个版本?如果此依赖项是对等项或依赖项怎么办?

例如

// external-lib-dep in npm

//package1's package.json
...
"dependencies": {
   "external-lib-dep": "^1.0.0"
}
...

// package2's package.json
...
"dependencies": {
   "external-lib-dep": "^1.2.0"
}
...

// package3's package.json
...
"dependencies": {
   "very-different-external-lib-dep": "^1.2.0"
}
...

是否有可能以某种方式“共享” deps 的版本而不是一遍又一遍地复制它?(就像dependencyManagement在 Maven 中的父 pom 中一样)。

如果 monorepo 拥有某个公司所有服务的“通用”库怎么办。当我在我的服务中使用其中一个库时,他们的解决方案会起作用吗?

标签: yarnpkgyarn-workspaces

解决方案


可以以一种特定方式在工作区之间共享依赖项的版本。

您的工作区应external-lib-dep在其peerDependencies. 在你的 monorepo 根目录中package.json,你应该external-lib-depdependencies. 这样,您的工作区将从external-lib-dep根工作区“继承”版本。


推荐阅读