【发布时间】:2021-07-06 16:00:52
【问题描述】:
在我们的项目中,我们在整个公司都使用了多个 monorepos。问题是,我们有例如 monorepo-A 和 monorepo-B 和 monorepo-B 使用来自 monorepo-A 的组件(这是不可更改的)。
例如,同一个团队正在开发 monorepo-A 和 monorepo-B。 Monorepo-B 是具有最终产品(服务器的实际输出、网页)的 monorepo,而 monorepo-A 只是在 monorepo-B 和其他团队使用的其他 monorepos 中使用的多个项目。
问题是,当团队同时开发 monorepo-A 和 monorepo-B 并在 monorepo-A 中更改某些内容时,开发人员需要先部署它才能在 monorepo-B 中进行尝试。
所以yarn link 有一种方法,但这不是很舒服,并且可能与包发生冲突。
有没有更好的方法可以在不发布代码的情况下为本地开发处理这种情况?有一个简单的结构(不是真实的,仅用于演示):
monorepo-a/
packages/
components/ (uses types)
schemas/ (uses types)
types/
lerna.json
package.json
tsconfig.json
monorepo-b/
packages/
web-app/ (uses monorepo-a/packages/components)
server/ (uses monorepo-a/packages/schemas)
types/
lerna.json
package.json
tsconfig.json
作为一名开发人员,我想更改 monorepo-A/packages/components 中的某些内容,并能够立即使用它而无需构建 monorepo-b/packages/web-app。但是因为它们不在同一个工作区中,所以我不能在tsconfig.json 中使用paths 或在package.json 中使用workspaces 或来自lerna 的东西。有没有办法甚至不将其发布到本地存储库?
【问题讨论】:
-
我不知道它如何与 yarn 一起工作,但与 npm 你不能只使用
npm install ../monorepo-a/packages/whatever吗?这会在你的磁盘上创建一个符号链接,但如果你 gitignore node_modules(我确定你这样做了)应该没问题。
标签: typescript yarnpkg monorepo lerna yarn-workspaces