Javascript 使用插件式软件包扩展电子应用程序开发的体系结构

Javascript 使用插件式软件包扩展电子应用程序开发的体系结构,javascript,architecture,electron,Javascript,Architecture,Electron,背景: 我们正在开发一个电子应用程序,它随着时间的推移越来越大。我们已经将web应用程序(渲染器进程)和本机包装器进程(主进程)分离为单独的项目,这是一个良好的开端,但还不够- 我们有不同的团队在同一个electron基础设施上工作,希望将代码拆分为单独的回购协议,每个协议由不同的团队管理,所有这些协议都将加载到electron的主要基础设施项目中 问题: 首先,这听起来很简单-为每个electron模块创建一个npm包(每个团队一个),并将这些包导入主electron项目,该项目管理所有这些包

背景:
我们正在开发一个电子应用程序,它随着时间的推移越来越大。我们已经将web应用程序(渲染器进程)和本机包装器进程(主进程)分离为单独的项目,这是一个良好的开端,但还不够- 我们有不同的团队在同一个electron基础设施上工作,希望将代码拆分为单独的回购协议,每个协议由不同的团队管理,所有这些协议都将加载到electron的主要基础设施项目中

问题:
首先,这听起来很简单-为每个electron模块创建一个npm包(每个团队一个),并将这些包导入主electron项目,该项目管理所有这些包并构建最终的electron应用程序。问题是这些电子包应该熟悉“electron”包,并且应该以某种方式使用此包的相同版本。由于跟踪主electron项目使用的软件包,并在每个模块中手动更新它,每次我们想要增加它的版本,这对放大的应用程序是不利的,因此我们希望能够以更好的方式同步它们

我能想到的(糟糕的)解决方案:
将electron实例从主electron应用程序传递到内部软件包(在
init
函数中),并使用它,而不是使用已安装的“electron”软件包。它解决了同步电子版本的问题,但是当主应用程序更新电子版本时,软件包将不熟悉它,并且可能会在不兼容的情况下中断


听起来无论我做什么,我都无法将项目解耦,它们必须(手动)通信才能正常工作。是否有任何架构设计方法可以帮助我将一个electron项目拆分为多个?

我们创建了
@我们的公司/我们的产品通用
包,具有通用依赖项和配置(
electron
typescript
,lint规则,全局常量)。如果我们想更新electron或typescript,我们将更新
*-common
包中的版本

或者您可以创建
@我们的公司/我们的产品electron
包,只需重新出口
electron