一次开发多个 npm 模块的方法(具有交叉依赖关系)

Posted

技术标签:

【中文标题】一次开发多个 npm 模块的方法(具有交叉依赖关系)【英文标题】:Approach for developing multiple npm modules at a time (with cross-dependencies) 【发布时间】:2016-05-03 09:22:11 【问题描述】:

我们的组织有 3 个用于开发的模块,我们希望继续制作更多。

我们遇到的麻烦是找到支持这种开发环境的工具。

考虑以下几点:

模块 A 模块B 模块C

ModuleC 依赖于 ModuleA 和 ModuleB ModuleB 依赖于 ModuleA

当我们对 ModuleB 进行更改时,我们必须手动增加 ModuleC 对 ModuleB 的 package.json 依赖项(因为它使用了 npm-shrinkwrap)

当我们对 ModuleA 进行更改时,我们不一定要增加 ModuleB 的依赖项(因为我们可以进行 semver 模式匹配),除非它是主要的版本更改,但是,我们确实必须重建 ModuleB 并增加它的版本,因为它消耗 ModuleA 并提供一个可分发的。然后,我们必须在 ModuleC 的 package.json 中添加 ModuleA 和 ModuleB 的依赖关系。

这一切都令人难以置信地麻木,而且,这是一个脆弱的过程,感觉就像可以自动化。

其他组织如何解决这个问题?真的有办法以这种方式开发模块吗?

【问题讨论】:

【参考方案1】:

不费吹灰之力做到这一点的唯一方法是使用单一存储库,并使用像 Lerna 这样的工具。https://github.com/lerna/lerna

【讨论】:

以上是关于一次开发多个 npm 模块的方法(具有交叉依赖关系)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 node.js 中卸载具有开发依赖项的 npm 模块?

具有javascript依赖关系的lit-element,未打包为es6模块(尚未)

Node.JS:使用多个 Git 存储库

Android Studio无法构建具有交叉模块依赖性的模块

全局安装具有对等依赖关系的 npm 包(package.json 中未提及)

需要一个“yarn/npm link”工作流程来开发和发布“反应的多个副本”模块