问题描述
假设我有一个在不同工作空间之间共享的外部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的版本,而不是一遍又一遍地复制它? (就像maven的父pom中的dependencyManagement
一样。)
如果monorepo拥有某个公司的所有服务的“公共”库,该怎么办?当我在服务中使用其中一个库时,它们是否可以解决问题?
解决方法
可以以一种特定的方式在工作空间之间共享依赖版本。
您的工作区应在其external-lib-dep
中声明peerDependencies
。在您的monorepo根package.json
中,您应该在external-lib-dep
中声明dependencies
。这样,您的工作空间将从根工作空间“继承” external-lib-dep
版本。