带有纱线工作空间的通用依赖库版本
Posted
技术标签:
【中文标题】带有纱线工作空间的通用依赖库版本【英文标题】:Common dependency lib version with yarn workspaces 【发布时间】:2021-01-28 06:38:21 【问题描述】:假设我有一个在不同工作区之间共享的外部 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 拥有某个公司所有服务的“通用”库会怎样。当我在我的服务中使用其中一个库时,它们的解决方案会起作用吗?
【问题讨论】:
【参考方案1】:可以以一种特定的方式在工作区之间共享依赖的版本。
您的工作区应在其peerDependencies
中声明external-lib-dep
。在你的monorepo根package.json
中,你应该在dependencies
中声明external-lib-dep
。这样,您的工作区将从根工作区“继承”external-lib-dep
版本。
【讨论】:
太棒了!谢谢!我应该在 peer dep 部分设置什么版本? 如果你想选择rootpackage.json
提供的任何版本,你可以在peer dep部分设置*
作为一个版本
如果 monorepo 拥有公司的所有标准后端库怎么办?我认为如果我将其中一个库设置为服务中的 dep,我将获得 * 对等依赖要求
抱歉,我只能根据您问题中最初提供的信息来回答。在您的问题中可以在哪里找到有关标准后端库的信息?以上是关于带有纱线工作空间的通用依赖库版本的主要内容,如果未能解决你的问题,请参考以下文章
如何在具有纱线工作空间的 monorepo 中从 nodejs 项目构建 docker 映像