首页 > 解决方案 > eslint 规则 @nrwl/nx/enforce-module-boundaries 失败 [更新]

问题描述

介绍

当我最近将 Ng 代码库移植到 Nx 12.x 时,我对这条规则感到非常困惑。我希望这篇文章可以帮助其他开始从 Ng 迁移到 Nx 的人。

上面的代码库是一个相当小的单个 repo,现在用于生产。使用 Nx 时,最好遵循 monorepo 的建议,以便在未来随着代码库的增长能够使用 monorepo 的好处。(例如,我在这里避免过度暴露当前仓库中的代码)。

我将上面的代码库放入my-org/apps/my-small-repo. 通过 linting,我对规则的失败感到困惑@nrwl/nx/enforce-module-boundaries。所以我尝试了不同的可能性来映射编译器或 linter 或两者都失败src/app的地方。my-org/apps/my-small-repo

我想出了以下解决方案。

解决方案 1

就放

  "compilerOptions": {
    "baseUrl": "src"
  },

进入根目录,并用以 .开头apps/my-small-repo/tsconfig.json的导入替换其中的所有导入。apps/my-small-repoapp

示例DashboardComponent

import { DashboardComponent } from 'app/components/dashboard/dashboard.component';

可能是更好的解决方案

此解决方案在 nx 13.x 上进行了测试,但它可能也适用于以前版本的 nx。

"app/*": ["apps/my-org/src/app/*"]

到你paths的回购根目录中。然后将规则放在 repo 根目录中。compilerOptionstsconfig.base.json"allowCircularSelfDependency": true,@nrwl/nx/enforce-module-boundaries

我们决定"allowCircularSelfDependency": true,避免使用丑陋的相对路径,例如../../../../../应用程序中的这个路径。而且我们还希望只有库名称空间tsconfig.base.json

规则文件

https://github.com/nrwl/nx/blob/master/packages/eslint-plugin-nx/src/rules/enforce-module-boundaries.ts

标签: eslinttsconfignrwl

解决方案


推荐阅读