Here's the contents of my .eslintrc.js file:
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
sourceType: 'module'
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking'
],
root: true,
env: {
node: true,
jest: true
},
ignorePatterns: ['.eslintrc.js'],
rules: {
'@typescript-eslint/explicit-function-return-type': 'error',
'@typescript-eslint/explicit-module-boundary-types': 'error',
'@typescript-eslint/for-direction': 'error',
'@typescript-eslint/getter-return': 'error',
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/no-async-promise-executor': 'error',
'@typescript-eslint/no-await-in-loop': 'error',
'@typescript-eslint/no-class-assign': 'error',
'@typescript-eslint/no-compare-neg-zero': 'error',
'@typescript-eslint/no-cond-assign': 'error',
'@typescript-eslint/no-const-assign': 'error',
'@typescript-eslint/no-constant-condition': 'error',
'@typescript-eslint/no-constructor-return': 'error',
'@typescript-eslint/no-control-regex': 'error',
'@typescript-eslint/no-debugger': 'error',
'@typescript-eslint/no-dupe-args': 'error',
'@typescript-eslint/no-dupe-class-members': 'error',
'@typescript-eslint/no-dupe-else-if': 'error',
'@typescript-eslint/no-dupe-keys': 'error',
'@typescript-eslint/no-duplicate-case': 'error',
'@typescript-eslint/no-duplicate-imports': 'error',
'@typescript-eslint/no-empty-character-class': 'error',
'@typescript-eslint/no-empty-pattern': 'error',
'@typescript-eslint/no-ex-assign': 'error',
'@typescript-eslint/no-explicit-any': 'error',
'@typescript-eslint/no-fallthrough': 'error',
'@typescript-eslint/no-func-assign': 'error',
'@typescript-eslint/no-import-assign': 'error',
'@typescript-eslint/no-inner-declarations': 'error',
'@typescript-eslint/no-invalid-regexp': 'error',
'@typescript-eslint/no-irregular-whitespace': 'error',
'@typescript-eslint/no-loss-of-precision': 'error',
'@typescript-eslint/no-misleading-character-class': 'error',
'@typescript-eslint/no-new-symbol': 'error',
'@typescript-eslint/no-obj-calls': 'error',
'@typescript-eslint/no-promise-executor-return': 'error',
'@typescript-eslint/no-prototype-builtins': 'error',
'@typescript-eslint/no-self-assign': 'error',
'@typescript-eslint/no-self-compare': 'error',
'@typescript-eslint/no-setter-return': 'error',
'@typescript-eslint/no-sparse-arrays': 'error',
'@typescript-eslint/no-template-curly-in-string': 'error',
'@typescript-eslint/no-this-before-super': 'error',
'@typescript-eslint/no-undef': 'error',
'@typescript-eslint/no-unexpected-multiline': 'error',
'@typescript-eslint/no-unmodified-loop-condition': 'error',
'@typescript-eslint/no-unreachable': 'error',
'@typescript-eslint/no-unreachable-loop': 'error',
'@typescript-eslint/no-unsafe-finally': 'error',
'@typescript-eslint/no-unsafe-negation': 'error',
'@typescript-eslint/no-unsafe-optional-chaining': 'error',
'@typescript-eslint/no-unused-expressions': 'error',
'@typescript-eslint/no-unused-labels': 'error',
'@typescript-eslint/no-unused-private-class-members': 'error',
'@typescript-eslint/no-unused-vars': 'error',
'@typescript-eslint/no-use-before-define': 'error',
'@typescript-eslint/no-useless-backreference': 'error',
'@typescript-eslint/require-atomic-updates': 'error',
'@typescript-eslint/use-isnan ': 'error',
'@typescript-eslint/valid-typeof': 'error',
curly: 'error'
}
};
package.json contents:
...
"scripts": {
"lint": "eslint \"{src,libs}/**/*.ts\" --fix",
"lint:ci": "eslint \"{src,libs}/**/*.ts\"",
...
"devDependencies": {
"@typescript-eslint/eslint-plugin": "5.12.1",
"@typescript-eslint/parser": "5.12.1",
"eslint": "8.9.0",
"eslint-config-prettier": "8.4.0",
"eslint-plugin-import": "2.25.4",
"eslint-plugin-prettier": "4.0.0",
...
Full error list:
1:1 error Definition for rule '@typescript-eslint/for-direction' was not found @typescript-eslint/for-direction
1:1 error Definition for rule '@typescript-eslint/getter-return' was not found @typescript-eslint/getter-return
1:1 error Definition for rule '@typescript-eslint/no-async-promise-executor' was not found @typescript-eslint/no-async-promise-executor
1:1 error Definition for rule '@typescript-eslint/no-await-in-loop' was not found @typescript-eslint/no-await-in-loop
1:1 error Definition for rule '@typescript-eslint/no-class-assign' was not found @typescript-eslint/no-class-assign
1:1 error Definition for rule '@typescript-eslint/no-compare-neg-zero' was not found @typescript-eslint/no-compare-neg-zero
1:1 error Definition for rule '@typescript-eslint/no-cond-assign' was not found @typescript-eslint/no-cond-assign
1:1 error Definition for rule '@typescript-eslint/no-const-assign' was not found @typescript-eslint/no-const-assign
1:1 error Definition for rule '@typescript-eslint/no-constant-condition' was not found @typescript-eslint/no-constant-condition
1:1 error Definition for rule '@typescript-eslint/no-constructor-return' was not found @typescript-eslint/no-constructor-return
1:1 error Definition for rule '@typescript-eslint/no-control-regex' was not found @typescript-eslint/no-control-regex
1:1 error Definition for rule '@typescript-eslint/no-debugger' was not found @typescript-eslint/no-debugger
1:1 error Definition for rule '@typescript-eslint/no-dupe-args' was not found @typescript-eslint/no-dupe-args
1:1 error Definition for rule '@typescript-eslint/no-dupe-else-if' was not found @typescript-eslint/no-dupe-else-if
1:1 error Definition for rule '@typescript-eslint/no-dupe-keys' was not found @typescript-eslint/no-dupe-keys
1:1 error Definition for rule '@typescript-eslint/no-duplicate-case' was not found @typescript-eslint/no-duplicate-case
1:1 error Definition for rule '@typescript-eslint/no-empty-character-class' was not found @typescript-eslint/no-empty-character-class
1:1 error Definition for rule '@typescript-eslint/no-empty-pattern' was not found @typescript-eslint/no-empty-pattern
1:1 error Definition for rule '@typescript-eslint/no-ex-assign' was not found @typescript-eslint/no-ex-assign
1:1 error Definition for rule '@typescript-eslint/no-fallthrough' was not found @typescript-eslint/no-fallthrough
1:1 error Definition for rule '@typescript-eslint/no-func-assign' was not found @typescript-eslint/no-func-assign
1:1 error Definition for rule '@typescript-eslint/no-import-assign' was not found @typescript-eslint/no-import-assign
1:1 error Definition for rule '@typescript-eslint/no-inner-declarations' was not found @typescript-eslint/no-inner-declarations
1:1 error Definition for rule '@typescript-eslint/no-invalid-regexp' was not found @typescript-eslint/no-invalid-regexp
1:1 error Definition for rule '@typescript-eslint/no-irregular-whitespace' was not found @typescript-eslint/no-irregular-whitespace
1:1 error Definition for rule '@typescript-eslint/no-misleading-character-class' was not found @typescript-eslint/no-misleading-character-class
1:1 error Definition for rule '@typescript-eslint/no-new-symbol' was not found @typescript-eslint/no-new-symbol
1:1 error Definition for rule '@typescript-eslint/no-obj-calls' was not found @typescript-eslint/no-obj-calls
1:1 error Definition for rule '@typescript-eslint/no-promise-executor-return' was not found @typescript-eslint/no-promise-executor-return
1:1 error Definition for rule '@typescript-eslint/no-prototype-builtins' was not found @typescript-eslint/no-prototype-builtins
1:1 error Definition for rule '@typescript-eslint/no-self-assign' was not found @typescript-eslint/no-self-assign
1:1 error Definition for rule '@typescript-eslint/no-self-compare' was not found @typescript-eslint/no-self-compare
1:1 error Definition for rule '@typescript-eslint/no-setter-return' was not found @typescript-eslint/no-setter-return
1:1 error Definition for rule '@typescript-eslint/no-sparse-arrays' was not found @typescript-eslint/no-sparse-arrays
1:1 error Definition for rule '@typescript-eslint/no-template-curly-in-string' was not found @typescript-eslint/no-template-curly-in-string
1:1 error Definition for rule '@typescript-eslint/no-this-before-super' was not found @typescript-eslint/no-this-before-super
1:1 error Definition for rule '@typescript-eslint/no-undef' was not found @typescript-eslint/no-undef
1:1 error Definition for rule '@typescript-eslint/no-unexpected-multiline' was not found @typescript-eslint/no-unexpected-multiline
1:1 error Definition for rule '@typescript-eslint/no-unmodified-loop-condition' was not found @typescript-eslint/no-unmodified-loop-condition
1:1 error Definition for rule '@typescript-eslint/no-unreachable' was not found @typescript-eslint/no-unreachable
1:1 error Definition for rule '@typescript-eslint/no-unreachable-loop' was not found @typescript-eslint/no-unreachable-loop
1:1 error Definition for rule '@typescript-eslint/no-unsafe-finally' was not found @typescript-eslint/no-unsafe-finally
1:1 error Definition for rule '@typescript-eslint/no-unsafe-negation' was not found @typescript-eslint/no-unsafe-negation
1:1 error Definition for rule '@typescript-eslint/no-unsafe-optional-chaining' was not found @typescript-eslint/no-unsafe-optional-chaining
1:1 error Definition for rule '@typescript-eslint/no-unused-labels' was not found @typescript-eslint/no-unused-labels
1:1 error Definition for rule '@typescript-eslint/no-unused-private-class-members' was not found @typescript-eslint/no-unused-private-class-members
1:1 error Definition for rule '@typescript-eslint/no-useless-backreference' was not found @typescript-eslint/no-useless-backreference
1:1 error Definition for rule '@typescript-eslint/require-atomic-updates' was not found @typescript-eslint/require-atomic-updates
1:1 error Definition for rule '@typescript-eslint/use-isnan ' was not found @typescript-eslint/use-isnan
1:1 error Definition for rule '@typescript-eslint/valid-typeof' was not found @typescript-eslint/valid-typeof
I don't really know what else I need to add to my configuration to make eslint work with the recommended rules. I've been pouring over the docs and it feels like I'm just trying things at random to try to get the errors to disappear.