Skip to content

Commit debb91e

Browse files
authored
Migrate typescript-eslint to flat config (#42)
1 parent a842361 commit debb91e

File tree

3 files changed

+84
-132
lines changed

3 files changed

+84
-132
lines changed

eslint.config.js

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,28 @@
1-
import { FlatCompat } from "@eslint/eslintrc";
1+
// @ts-check
22
import eslintJS from "@eslint/js";
3-
import typescriptParser from "@typescript-eslint/parser";
43
import eslintConfigPrettier from "eslint-config-prettier";
54
import globals from "globals";
6-
import { dirname } from "path";
7-
import { fileURLToPath } from "url";
5+
import eslintTS from "typescript-eslint";
86

97
const allFiles = "**/*.?(c|m){js,ts}";
108
const jsFiles = "**/*.?(c|m)js";
119
const commonFiles = "**/*.c{js,ts}";
1210

13-
const rootDir = dirname(fileURLToPath(import.meta.url));
14-
const compat = new FlatCompat({ baseDirectory: rootDir });
15-
16-
export default [
11+
export default eslintTS.config(
1712
{ ignores: [".yarn/", ".pnp.*", "**/dist/"] },
18-
{ files: [allFiles], ...eslintJS.configs.recommended },
19-
...compat
20-
.extends(
21-
"plugin:@typescript-eslint/recommended-type-checked",
22-
"plugin:@typescript-eslint/stylistic-type-checked",
23-
)
24-
.map((config) => ({ files: [allFiles], ...config })),
25-
...compat
26-
.extends("plugin:@typescript-eslint/disable-type-checked")
27-
.map((config) => ({ files: [jsFiles], ...config })),
28-
{ files: [allFiles], ...eslintConfigPrettier },
2913
{
3014
files: [allFiles],
15+
extends: [
16+
eslintJS.configs.recommended,
17+
...eslintTS.configs.recommendedTypeChecked,
18+
...eslintTS.configs.stylisticTypeChecked,
19+
eslintConfigPrettier,
20+
],
3121
languageOptions: {
3222
ecmaVersion: "latest",
3323
sourceType: "module",
3424
globals: globals.nodeBuiltin,
35-
// Options specific to @typescript-eslint/parser
36-
parser: typescriptParser,
25+
parser: eslintTS.parser,
3726
parserOptions: {
3827
allowAutomaticSingleRunInference: true,
3928
ecmaVersion: "latest",
@@ -44,6 +33,10 @@ export default [
4433
reportUnusedDisableDirectives: true,
4534
},
4635
},
36+
{
37+
files: [jsFiles],
38+
extends: [eslintTS.configs.disableTypeChecked],
39+
},
4740
{
4841
files: [commonFiles],
4942
languageOptions: {
@@ -58,4 +51,4 @@ export default [
5851
"@typescript-eslint/require-await": "off",
5952
},
6053
},
61-
];
54+
);

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,16 @@
6464
},
6565
"devDependencies": {
6666
"@babel/runtime": "7.24.4",
67-
"@eslint/eslintrc": "3.0.2",
6867
"@eslint/js": "8.57.0",
6968
"@types/babel__core": "7.20.5",
7069
"@types/babel__plugin-transform-runtime": "7.9.5",
7170
"@types/babel__preset-env": "7.9.6",
7271
"@types/chai": "4.3.14",
7372
"@types/chai-jest-snapshot": "1.3.8",
7473
"@types/eslint-config-prettier": "6.11.3",
75-
"@types/eslint__eslintrc": "2.1.1",
7674
"@types/eslint__js": "8.42.3",
7775
"@types/mocha": "10.0.6",
7876
"@types/node": "20.12.7",
79-
"@typescript-eslint/eslint-plugin": "7.6.0",
80-
"@typescript-eslint/parser": "7.6.0",
8177
"chai": "5.1.0",
8278
"chai-jest-snapshot": "2.0.0",
8379
"eslint": "8.57.0",
@@ -87,6 +83,7 @@
8783
"prettier": "3.2.5",
8884
"ts-node": "10.9.2",
8985
"typescript": "5.4.5",
86+
"typescript-eslint": "7.7.0",
9087
"webpack": "5.91.0"
9188
}
9289
}

0 commit comments

Comments
 (0)