Skip to content

Commit f500d94

Browse files
authored
Modernize toolchain (TypeScript, ESLint, webpack, ...) (#149)
Bump TypeScript (5.6->6.0), ESLint (9->10), eslint-plugin-react-hooks (5->7), pnpm, @types/node, webpack-cli, webpack-dev-server and copy-webpack-plugin to their latest majors. Furthermore, modernize tsconfigbase.json for TypeScript 6.0: bump `target`/`lib` to ES2024, switch `moduleResolution` from classic "node" to "bundler", `module` switched to "esnext", and `downlevelIteration` dropped, since TS 6.0 turns these into hard errors ahead of their removal in TS 7.0. This also required a few fixes: - Fix new violations from ESLint 10's default preserve-caught-error and no-useless-assignment rules. - Patch eslint-plugin-react's flat configs with @eslint/compat's fixupConfigRules to fix a runtime crash under ESLint 10, which removed the context.getFilename() API the plugin still calls. - Add ambient "*.css" module declarations, now required since TS 6.0 type-checks CSS side-effect imports more strictly. - Fix rootDir/types gaps in standalone-app/tsconfig.json surfaced by the same TS 6.0 strictness, needed for both tsc/ts-loader and ts-node's config loading in webpack-cli.
1 parent cd139ea commit f500d94

14 files changed

Lines changed: 409 additions & 972 deletions

‎eslint.config.mjs‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import reactPlugin from "eslint-plugin-react";
55
import reactHooks from "eslint-plugin-react-hooks";
66
import path from "node:path";
77
import {fileURLToPath} from "node:url";
8-
import {includeIgnoreFile} from "@eslint/compat";
9-
import {fixupPluginRules} from "@eslint/compat";
8+
import {fixupConfigRules, fixupPluginRules, includeIgnoreFile} from "@eslint/compat";
109
import globals from "globals";
1110

1211
const __filename = fileURLToPath(import.meta.url);
@@ -16,12 +15,12 @@ const gitignorePath = path.resolve(__dirname, ".gitignore");
1615
export default [
1716
includeIgnoreFile(gitignorePath),
1817
eslint.configs.recommended,
19-
reactPlugin.configs.flat["jsx-runtime"],
18+
...fixupConfigRules([reactPlugin.configs.flat["jsx-runtime"]]),
2019
eslintPluginPrettierRecommended,
2120
...tseslint.configs.strict,
2221
...tseslint.configs.stylistic,
2322
{
24-
...reactPlugin.configs.flat.recommended,
23+
...fixupConfigRules([reactPlugin.configs.flat.recommended])[0],
2524
settings: {
2625
...reactPlugin.configs.flat.recommended.settings,
2726
react: {version: "detect"},

‎package.json‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"private": true,
33
"name": "query-graphs",
4-
"packageManager": "pnpm@11.21.0",
4+
"packageManager": "pnpm@11.22.0",
55
"engines": {
66
"node": ">=24"
77
},
@@ -10,16 +10,16 @@
1010
"lint-test": "eslint ."
1111
},
1212
"devDependencies": {
13-
"@eslint/compat": "^1.2.1",
14-
"@eslint/js": "^9.13.0",
15-
"eslint": "^9.13.0",
16-
"eslint-config-prettier": "^9.1.0",
13+
"@eslint/compat": "^2.1.0",
14+
"@eslint/js": "^10.0.1",
15+
"eslint": "^10.9.0",
16+
"eslint-config-prettier": "^10.1.8",
1717
"eslint-plugin-prettier": "^5.2.1",
1818
"eslint-plugin-react": "^7.37.1",
19-
"eslint-plugin-react-hooks": "^5.0.0",
19+
"eslint-plugin-react-hooks": "^7.1.1",
2020
"globals": "^17.11.0",
2121
"prettier": "^3.3.3",
22-
"typescript": "^5.6.3",
22+
"typescript": "^6.0.3",
2323
"typescript-eslint": "^8.10.0"
2424
}
2525
}

0 commit comments

Comments
 (0)