为啥 nrwl nx 为每个应用程序创建一个单独的 e2e 项目?

Posted

技术标签:

【中文标题】为啥 nrwl nx 为每个应用程序创建一个单独的 e2e 项目?【英文标题】:Why does nrwl nx create a separate e2e project for each app?为什么 nrwl nx 为每个应用程序创建一个单独的 e2e 项目? 【发布时间】:2019-01-16 16:28:10 【问题描述】:

当创建一个新的 nx 工作区(即使用 create-nx-workspace)然后生成一个应用程序(使用 ng g app)时,它会在应用程序文件夹内创建一个应用程序文件夹(到目前为止一切顺利)以及另一个 app-e2e文件夹,也在应用程序文件夹内。 在我看来,在 src 文件夹旁边的 app 文件夹中创建一个 e2e 文件夹会更有意义,因为 e2e 测试应该属于那个特定的应用程序,而且它不会那样弄乱应用程序文件夹。

那么这个约定背后的原因是什么?

非常感谢!

【问题讨论】:

【参考方案1】:

这个约定背后的原因是什么?

事实证明,这实际上是由于 Angular 6 CLI 造成的。 Nx 只使用内置的角度示意图。我最初并没有意识到这一点,但您可以通过在 app1 中使用 ng new app1ng generate application app2 创建一个新应用程序来验证此行为。 app1 是使用常规结构创建的,而app2 和兄弟app2-e2e 是在app1 内的默认projects 目录中创建的。

最初,我和你有同样的问题。我一直在我的 nx 工作区中手动重组每个新生成的应用程序,以便 e2e 文件夹位于其各自的应用程序文件夹内。这导致我在 nx 存储库中创建了一个 feature request。在我为这个功能打开 a PR 之后,我向我解释了底层的 Angular CLI 6 约定。

【讨论】:

以上是关于为啥 nrwl nx 为每个应用程序创建一个单独的 e2e 项目?的主要内容,如果未能解决你的问题,请参考以下文章

nrwl nx angular 的设计选择是啥

创建新应用程序和库时出现@nrwl/nx 错误

nrwl/nx 原理图创建 Angular 应用程序并配置 Angular json

在 Nrwl/Nx 工作区中包含一些库的包

Nrwl Nx build for production 缺少节点模块包

NRWL NX 导入库错误 TS2307:找不到模块“@eduboard/interfaces”