如何在 eslint-plugin-import 中为 TypeScript 配置 `no-cycle` 规则?
有三个 .ts 文件,a.ts 和 b.ts 相互循环导入,而 c.ts 同时导入 a.ts 和 b.ts。
在检查 c.ts 时,我期望 ESLint 报告循环依赖。
但出于某种原因,运行 yarn eslint src/c.ts 并没有报任何错误!!!
a.ts:
import y from "./b";
const x: number = y + 1;
export default x;
b.ts:
import x from "./a";
const y: number = x + 1;
export default y;
c.ts:
import x from "./a";
import y from "./b";
console.log(x, y);
以及 .eslintrc.json:
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript"
],
"plugins": ["@typescript-eslint", "import"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig.json"
},
"settings": {
"import/extensions": [".js", ".jsx", ".ts", ".tsx"],
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"]
}
},
"rules": {
"import/no-cycle": [
"error",
{
"maxDepth": 10,
"ignoreExternal": true
}
]
}
}
GitHub 仓库: https://github.com/Yaojian/no-cycle-test
答案#1
它不会在 c.ts 文件中引发 lint 错误,因为循环依赖存在于 a.ts 和 b.ts 之间。ESLint no-cycle 规则描述。
a.ts 文件
b.ts 文件

