【发布时间】:2023-01-13 18:41:20
【问题描述】:
我开始对 monorepo 方法特别是 Nx.js 感兴趣。几乎所有的文章都说 monorepo 解决了库版本不兼容的问题,我不太明白是怎么做到的。我有几个问题:
- 如果我理解正确的话,monorepo 的想法(就共享代码而言)所有共享代码总是相同的版本并且所有更改都发生在一个原子提交中(作为 monorepo 状态的广告)。所以让我们想象一下 monorepo 有 100 个项目,它们都依赖于同一个 repo 中的
libA。如果我在libA中更改了 smth,那么我必须检查所有相关项目中的更改。此外,我必须等待所有代码所有者审查我的更改。那么什么是高手呢? - 让我们想象一下,我有以下项目的 monorepo:
appA、libC、libD,还有一些第三方库,我们称它为third-party-lib。appA依赖于libC和libD。有时appA需要third-party-lib-v3,但libC依赖于third-party-lib-v1。 https://monorepo.tools/#code-generation 指出:“所有内容的一个版本 无需担心由于项目依赖于第三方库的冲突版本而导致的不兼容性。”。但事实并非如此。在 Javascript 的世界中,它会在不同的node_modules中产生 2 个不同版本的third-party-lib。再问一下,什么是专业人士?我的问题可能非常天真,因为我从来没有遇到过图书馆问题,而且我刚刚开始学习 monorepo 主题,所以如果有人帮助我处理它,我会很高兴。
【问题讨论】: