如何解决如何管理多个 monorepos
在我们的项目中,我们在整个公司中使用了多个 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 中构建即可立即使用它。但是因为它们不在同一个工作区中,所以我不能在 paths
中使用 tsconfig.json
或在 workspaces
中使用 package.json
或来自 lerna 的东西。有没有办法不将其发布到本地存储库?
解决方法
考虑创建一个 enterprise NPM registry。它会在您迁移时吸收一些资源,但可能是最具扩展性的解决方案,因为它允许您使用所有常规 NPM 工具处理内部依赖项。
这将允许每个 Mono 存储库发布每个子包,这非常有助于减少代码库之间的耦合并严格定义每个包的角色。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。