如何将 typescript-eslint 规则添加到 eslint
Posted
技术标签:
【中文标题】如何将 typescript-eslint 规则添加到 eslint【英文标题】:How to add typescript-eslint rules to eslint 【发布时间】:2021-04-14 12:03:31 【问题描述】:我正在使用 NX 构建 Angular 应用程序,并且我已将其配置为使用 ESLint。我们可以配置像no-console
这样的内置规则,但@typescript-eslint/no-inferrable-types
不接受我们的覆盖。我们甚至尝试将规则移动到 overrides
部分的变量条目中,但没有任何效果。
我们在哪里指定typescript-eslint
规则?
我们的根级.eslintrc.json
:
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nrwl/nx"],
"overrides": [
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules":
"@nrwl/nx/enforce-module-boundaries": [
"error",
"enforceBuildableLibDependency": true,
"allow": [],
"depConstraints": [
"sourceTag": "*", "onlyDependOnLibsWithTags": ["*"]
]
]
,
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nrwl/nx/typescript"],
"parserOptions": "project": "./tsconfig.*?.json" ,
"rules":
,
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nrwl/nx/javascript"],
"rules":
],
"rules":
"no-console":"warn",
"@typescript-eslint/no-inferrable-types": "off"
【问题讨论】:
在您的.eslintrc
文件中?见this
【参考方案1】:
根据我对 NX linting 工作原理的理解,我认为您可以将规则添加到覆盖部分。
在下面的 JSON 中,您可以看到 no-console
已添加到具有 *.ts 和 *.tsx 文件匹配的覆盖数组元素的“规则”中。
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nrwl/nx"],
"overrides": [
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules":
"@nrwl/nx/enforce-module-boundaries": [
"error",
"enforceBuildableLibDependency": true,
"allow": [],
"depConstraints": [
"sourceTag": "*", "onlyDependOnLibsWithTags": ["*"]
]
]
,
"files": ["*.ts", "*.tsx"],
"extends": ["plugin:@nrwl/nx/typescript"],
"parserOptions": "project": "./tsconfig.*?.json" ,
"rules":
"no-console":"warn"
,
"files": ["*.js", "*.jsx"],
"extends": ["plugin:@nrwl/nx/javascript"],
"rules":
],
"rules":
"@typescript-eslint/no-inferrable-types": "off"
重要的是覆盖您放入规则的数组元素。我遇到了类似的问题,您可以在https://***.com/a/71230627/990642 的答案中看到我尝试的不同方法的完整说明。
值得注意的是,似乎人们对plugins
或extends
中已经指定的覆盖规则喜忧参半。
【讨论】:
【参考方案2】:您的插件引用数组中缺少插件。因此只有“@nrwl/nx”规则和其他没有命名空间的规则将适用。 尝试这个 : “插件”:[ "@nrwl/nx", “@typescript-eslint”]。 哦,如果您只想将它应用于某种文件(例如 .ts 或 .tsx 文件),或者/并更改处理解析器,您也可以将其添加到“覆盖”部分中
【讨论】:
以上是关于如何将 typescript-eslint 规则添加到 eslint的主要内容,如果未能解决你的问题,请参考以下文章
带有 @typescript-eslint/no-unsafe-* 规则的新 eslint 错误
使用内联注释禁用 typescript-eslint 插件规则(no-explicit-any)
加载规则“@typescript-eslint/dot-notation”时出错
vue3+typescript实战记录二(typescript-eslint)
将 .eslintrc 重新定位到父级后,ESLint 找不到配置“prettier/@typescript-eslint”
为啥 eslint 考虑 JSX 或一些反应 @types undefined,因为将 typescript-eslint/parser 升级到版本 4.0.0