Newer
Older
"ignorePatterns": ["projects/**/*"],
"ecmaVersion": "2019",
"sourceType": "module",
"project": ["tsconfig.json"],
"plugin:storybook/recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/stylistic",
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates",
"plugin:rxjs/recommended"
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
],
"spaced-comment": ["error", "always", { "block": { "exceptions": ["*"] } }],
"@typescript-eslint/prefer-optional-chain": "warn",
// TSLINT rules migration
"@typescript-eslint/explicit-function-return-type": "error",
"eqeqeq": "error",
// JSDOC extends overrides: disable some of extends rules
// JSdoc is not always needed
"jsdoc/require-jsdoc": 0,
"jsdoc/require-returns": 0,
"jsdoc/require-returns-type": 0,
"jsdoc/require-param": 0,
"jsdoc/require-param-type": 0,
// Allow some params to be described and some to be omitted
"jsdoc/check-param-names": 0,
"rxjs/no-implicit-any-catch": 0 // if enabled fails the lint script
"files": ["*.html"],
"extends": ["plugin:@angular-eslint/template/recommended"],
"rules": {
"@angular-eslint/template/attributes-order": "warn",
"@angular-eslint/template/banana-in-box": "error",
"@angular-eslint/template/button-has-type": "error",
"@angular-eslint/template/click-events-have-key-events": "error",
"@angular-eslint/template/conditional-complexity": "warn",
"@angular-eslint/template/cyclomatic-complexity": "off",
"@angular-eslint/template/eqeqeq": "error",
"@angular-eslint/template/mouse-events-have-key-events": "error",
"@angular-eslint/template/no-any": "error",
"@angular-eslint/template/no-autofocus": "error",
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
"@angular-eslint/template/no-call-expression": "off",
"@angular-eslint/template/no-distracting-elements": "error",
"@angular-eslint/template/no-duplicate-attributes": "error",
"@angular-eslint/template/no-inline-styles": "off",
"@angular-eslint/template/no-interpolation-in-attributes": "off",
"@angular-eslint/template/no-negated-async": "error",
"@angular-eslint/template/no-positive-tabindex": "error",
"@angular-eslint/template/use-track-by-function": "off",
"@angular-eslint/component-class-suffix": "error",
"@angular-eslint/component-max-inline-declarations": "error",
"@angular-eslint/component-selector": "error",
"@angular-eslint/contextual-decorator": "error",
"@angular-eslint/contextual-lifecycle": "error",
"@angular-eslint/directive-class-suffix": "error",
"@angular-eslint/directive-selector": "error",
"@angular-eslint/no-attribute-decorator": "error",
"@angular-eslint/no-conflicting-lifecycle": "error",
"@angular-eslint/no-empty-lifecycle-method": "error",
"@angular-eslint/no-forward-ref": "error",
"@angular-eslint/no-host-metadata-property": "error",
"@angular-eslint/no-input-prefix": "error",
"@angular-eslint/no-input-rename": "error",
"@angular-eslint/no-inputs-metadata-property": "error",
"@angular-eslint/no-lifecycle-call": "error",
"@angular-eslint/no-output-native": "error",
"@angular-eslint/no-output-on-prefix": "error",
"@angular-eslint/no-output-rename": "error",
"@angular-eslint/no-outputs-metadata-property": "error",
"@angular-eslint/no-pipe-impure": "error",
"@angular-eslint/no-queries-metadata-property": "error",
"@angular-eslint/pipe-prefix": "error",
"@angular-eslint/prefer-on-push-component-change-detection": "error",
"@angular-eslint/prefer-output-readonly": "error",
"@angular-eslint/relative-url-prefix": "error",
"@angular-eslint/sort-ngmodule-metadata-arrays": "error",
"@angular-eslint/use-component-selector": "error",
"@angular-eslint/use-component-view-encapsulation": "error",
"@angular-eslint/use-injectable-provided-in": "error",
"@angular-eslint/use-lifecycle-interface": "error",
"@angular-eslint/template/alt-text": "error",
"@angular-eslint/template/elements-content": "error",
"@angular-eslint/template/interactive-supports-focus": "error",
"@angular-eslint/template/label-has-associated-control": "error",
"@angular-eslint/template/role-has-required-aria": "error",
"@angular-eslint/template/table-scope": "error",
"@angular-eslint/template/valid-aria": "error",
"@angular-eslint/template/prefer-self-closing-tags": ["error"]