Nx/Angular 项目的 Esslint 配置 (no-host-metadata-属性)
Esslint configuration for Nx/Angular project (no-host-metadata-property)
我想将规则 @angular-eslint/no-host-metadata-property
变成警告而不是错误,但我不知道如何配置它。
错误消息如下所示:
Use @HostBinding or @HostListener rather than the host
metadata
property (https://angular.io/styleguide#style-06-03)
@angular-eslint/no-host-metadata-property
这是我在根级别的 eslintrc.json
文件中尝试过的:
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nrwl/nx"],
"overrides": [
{
"files": ["*.ts"],
"rules": {
....
"@angular-eslint/no-host-metadata-property": "warn",
}
"plugins": ["@angular-eslint/eslint-plugin", "eslint-plugin-import", "@typescript-eslint"]
}
}
这是一个 Angular 12 项目。我 运行 nx 迁移命令将 linting 规则从 tslint 转换为 eslint。我怎样才能覆盖该规则?
据我所知,Nx 没有直接的方法允许这样做,因为可能有很多 angular 项目,或者在同一个存储库中使用打字稿的 React 项目。我最终将这些错误转换为警告的方法是注释掉所有 projects/libraries 中的插件扩展,并在工作区级别扩展它们。这允许它们被覆盖。
所有 angular 应用程序和库(在 libs 文件夹内)的 eslintrc.json
如下所示:
{
"extends": ["../../../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
//"extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
"parserOptions": {
"project": ["libs/siem/custom-dashboard/data-access-custom-dashboard/tsconfig.*?.json"]
},
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
]
}
},
{
"files": ["*.html"],
// "extends": ["plugin:@nrwl/nx/angular-template"],
"rules": {}
}
]
}
然后 eslintrc.json
在我的工作区级别是这样的:
{ .
.
.
"files": ["*.ts"],
"extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
"rules": {
//overrides go in here
}
"plugins": ["@angular-eslint/eslint-plugin", "eslint-plugin-import", "@typescript-eslint"]
},
这是迄今为止我遇到的唯一解决方案。一旦我修复了所有有错误的地方,我打算删除覆盖并让一切都像最初默认设置的那样。
在根级别上进行更改是徒劳的,因为您的项目的 .eslintrc.json
将覆盖这些更改,因为 @nrwl/nx/angular
在覆盖部分中设置。
不幸的是,您必须在覆盖部分中为每个项目设置此项。
如果您有多个项目 and/or 需要应用多个更改,您可以将其提取到 eslint-custom-overrides.json
文件中并将其用作 extends
部分的最后一个:
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
"extends": [
"plugin:@nrwl/nx/angular",
"plugin:@angular-eslint/template/process-inline-templates"
"../../eslintrc-custom-overrides.json"
],
},
...
],
...
}
你的 eslintrc-custom-overrides.json
看起来像这样:
{
"overrides": [
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/no-host-metadata-property": "warn"
}
}
]
}
查看有关 NX Issue 的更多详细信息。
我想将规则 @angular-eslint/no-host-metadata-property
变成警告而不是错误,但我不知道如何配置它。
错误消息如下所示:
Use @HostBinding or @HostListener rather than the
host
metadata property (https://angular.io/styleguide#style-06-03) @angular-eslint/no-host-metadata-property
这是我在根级别的 eslintrc.json
文件中尝试过的:
{
"root": true,
"ignorePatterns": ["**/*"],
"plugins": ["@nrwl/nx"],
"overrides": [
{
"files": ["*.ts"],
"rules": {
....
"@angular-eslint/no-host-metadata-property": "warn",
}
"plugins": ["@angular-eslint/eslint-plugin", "eslint-plugin-import", "@typescript-eslint"]
}
}
这是一个 Angular 12 项目。我 运行 nx 迁移命令将 linting 规则从 tslint 转换为 eslint。我怎样才能覆盖该规则?
据我所知,Nx 没有直接的方法允许这样做,因为可能有很多 angular 项目,或者在同一个存储库中使用打字稿的 React 项目。我最终将这些错误转换为警告的方法是注释掉所有 projects/libraries 中的插件扩展,并在工作区级别扩展它们。这允许它们被覆盖。
所有 angular 应用程序和库(在 libs 文件夹内)的 eslintrc.json
如下所示:
{
"extends": ["../../../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
//"extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
"parserOptions": {
"project": ["libs/siem/custom-dashboard/data-access-custom-dashboard/tsconfig.*?.json"]
},
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
]
}
},
{
"files": ["*.html"],
// "extends": ["plugin:@nrwl/nx/angular-template"],
"rules": {}
}
]
}
然后 eslintrc.json
在我的工作区级别是这样的:
{ .
.
.
"files": ["*.ts"],
"extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
"rules": {
//overrides go in here
}
"plugins": ["@angular-eslint/eslint-plugin", "eslint-plugin-import", "@typescript-eslint"]
},
这是迄今为止我遇到的唯一解决方案。一旦我修复了所有有错误的地方,我打算删除覆盖并让一切都像最初默认设置的那样。
在根级别上进行更改是徒劳的,因为您的项目的 .eslintrc.json
将覆盖这些更改,因为 @nrwl/nx/angular
在覆盖部分中设置。
不幸的是,您必须在覆盖部分中为每个项目设置此项。
如果您有多个项目 and/or 需要应用多个更改,您可以将其提取到 eslint-custom-overrides.json
文件中并将其用作 extends
部分的最后一个:
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
"extends": [
"plugin:@nrwl/nx/angular",
"plugin:@angular-eslint/template/process-inline-templates"
"../../eslintrc-custom-overrides.json"
],
},
...
],
...
}
你的 eslintrc-custom-overrides.json
看起来像这样:
{
"overrides": [
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/no-host-metadata-property": "warn"
}
}
]
}
查看有关 NX Issue 的更多详细信息。