NxWorkspace 应用于具有多个 Angular 客户端的现有 .Net Core API

问题描述

我正在对 NxWorkspace 及其在现有 .Net Core 解决方案中的实现进行测试,在该解决方案中,我们有多个可以从 NxWorkspace 中受益的 Angular 应用程序。我了解在创建没有 .Net Core API 的新存储库时这将如何工作,但我很难想象将 NxWorkspace 实现到我们现有的存储库。

在将 Nx 与 .Net Core(或非 JS 技术)结合使用时,我试图找出的最佳实践是什么? Nx 是否必须位于根目录中,或者如果它位于下一层的文件夹中是否重要?我已经完成了 NxWorkspace 视频讲座,所以我了解了 Nx 的实用性,但在如何将其应用于我们现有的存储库,或者它是否应该具有它的好处方面做得不够。例如:

之前

根目录中的当前文件夹结构,省略了 OpenShift、Docker 和管道工件:

/dotnet-webapi
/client1-angular
/client2-angular
/client3-react

之后

在 /client-workspace 中使用 NxWorkspace 的新文件夹结构:

/dotnet-webapi
/client-workspace (NxWorkspace)
  /apps
    /client1-angular
    /client2-angular
    /client3-angular
  /libs
  /tools

对比

根中的 NxWorkspace 即使它根本不会使 .Net Core API 受益,而且感觉就像将 API 埋在 JS 生态系统中一样:

/apps
  /dotnet-webapi
  /client1-angular
  /client2-angular
  /client3-angular
/libs
/tools

解决方法

我们在工作中为我们的 Angular 应用程序利用了几个内部 .NET 核心 API,但目前我们的 monorepo 仅包含 Angular 应用程序。我们肯定已经感受到这些好处,并希望最终扩展它以容纳 .NET API。

后两个版本中的任何一个都应该可以正常工作。就个人而言,我们正在推迟将 .NET 项目添加到 monorepo 中,直到一个类似于 Nx Community GO 插件的好插件出现在 .NET 中。创建该插件后,我们将采用您的第二个版本的策略,其中apis 在apps 目录下。

虽然您认为目前它不会从中受益是正确的,但一旦创建了一个好的 .NET 插件,您就可以将其添加到 workspace/nx.json 并开始获得一些好处。这些好处将包括计算缓存、build:affected 等,尽管无法从应用堆栈的打字稿部分引用它们。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...