【发布时间】:2020-04-22 06:40:16
【问题描述】:
到目前为止,我们只有一个 Angular 8 应用程序。但是现在我们必须创建一个新的管理应用程序,其 UI 将与现有应用程序相似(类似于登录组件、侧边栏、导航栏等的相似 UI)。由于这两个应用程序将部署在两台不同的服务器上但彼此共享组件,因此我们决定将两个不同的源代码保存在一个具有共享组件库的 repo 下。
我们现有的应用程序是使用Jhipster 生成的。
我发现以下两种方法可能有助于维护两个不同的应用程序。
我在Creating Libraries for Angular 阅读了这篇文章。但是,我找不到任何有关如何更改现有构建过程以构建两个不同应用程序的材料?我阅读的所有文章都有 Angular CLI 命令来构建不同的应用程序。由于我们已经将 webpack 作为打包器,我如何配置它来构建我的两个应用程序?基本上,我所有的疑问都是关于如何扩展我们用来构建、测试和维护这两个不同应用程序的现有工具。
然后我阅读了有关 monorepo 模式的信息,并通过nrwl.io 遇到了Nx。据我了解,它是 Angular CLI 之上的一个包装器,以支持 monorepo 模式,并附带维护这两个应用程序所需的所有工具。
所以我的问题是,当您只需要在两个应用程序之间共享代码时,monorepo 模式是否值得采用?这是就开发的便利性与将现有应用程序转换为支持 monorepo 模式(设置工具,如Nx)所花费的时间而言,我读过这有点令人头疼。
【问题讨论】:
-
请注意,JHipster 生成的 webpack 构建过程与 angular-cli 不完全兼容,所以我怀疑 Nx 是否可以工作。共享库对我来说看起来不错,您将有 3 个文件夹:lib、app1 和 app2。您的 lib builmd 进程应该部署到您的本地 npm 注册表(例如 Sonatype Nexus),并且 2 个应用程序应该在各自的 package.json 中引用它
-
同意 JHipster webpack 构建过程与 angular-cli 不完全兼容。但是,通过将库发布到本地 npm 注册表的方法,我将有管理库版本和更新两个应用程序的开销。如 Nx 指南中所示,这种开销似乎由 monorepo 模式处理。
标签: angular typescript jhipster nrwl-nx