Migre eslint v8 → v9 (flat config), supprime les dépréciations

- eslint 8 → 9, @typescript-eslint/* → typescript-eslint (package unifié)
- Remplace .eslintrc.json par eslint.config.mjs (backend) et eslint.config.js (frontend)
- Ajoute eslint-plugin-react, eslint-plugin-react-hooks, globals (frontend)
- Supprime rimraf@3, @humanwhocodes/* qui étaient des deps transitives d'eslint v8

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Sonnet 4.6 committed 2026-04-16 11:27:46 +02:00
1 parent 3914f28e19
commit 84c5cd6363
6 files changed
+59 -62

No files matched your search

-22
View File
@@ -1,22 +0,0 @@
{
"env": {
"node": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"@typescript-eslint"
],
"rules": {
"@typescript-eslint/no-unused-vars": "warn",
"@typescript-eslint/no-explicit-any": "warn"
}
}
+16
View File
@@ -0,0 +1,16 @@
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
export default tseslint.config(
js.configs.recommended,
...tseslint.configs.recommended,
{
rules: {
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-explicit-any': 'warn',
},
},
{
ignores: ['dist/**', 'node_modules/**'],
}
);
+3 -3
View File
@@ -33,9 +33,9 @@
"@types/bcryptjs": "^2.4.2",
"typescript": "^5.2.2",
"tsx": "^4.1.0",
"eslint": "^8.50.0",
"@typescript-eslint/eslint-plugin": "^6.7.5",
"@typescript-eslint/parser": "^6.7.5",
"eslint": "^9.18.0",
"@eslint/js": "^9.18.0",
"typescript-eslint": "^8.22.0",
"vitest": "^0.34.6"
}
}
-34
View File
@@ -1,34 +0,0 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"@typescript-eslint",
"react"
],
"rules": {
"react/react-in-jsx-scope": "off",
"@typescript-eslint/no-unused-vars": "warn",
"@typescript-eslint/no-explicit-any": "warn"
},
"settings": {
"react": {
"version": "detect"
}
}
}
+34
View File
@@ -0,0 +1,34 @@
import js from '@eslint/js';
import tseslint from 'typescript-eslint';
import reactPlugin from 'eslint-plugin-react';
import reactHooksPlugin from 'eslint-plugin-react-hooks';
import globals from 'globals';
export default tseslint.config(
js.configs.recommended,
...tseslint.configs.recommended,
{
plugins: {
react: reactPlugin,
'react-hooks': reactHooksPlugin,
},
languageOptions: {
globals: {
...globals.browser,
},
},
rules: {
'react/react-in-jsx-scope': 'off',
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-explicit-any': 'warn',
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'warn',
},
settings: {
react: { version: 'detect' },
},
},
{
ignores: ['dist/**', 'node_modules/**'],
}
);
+6 -3
View File
@@ -23,11 +23,14 @@
"devDependencies": {
"@types/react": "^18.2.28",
"@types/react-dom": "^18.2.13",
"@typescript-eslint/eslint-plugin": "^6.7.5",
"@typescript-eslint/parser": "^6.7.5",
"@vitejs/plugin-react": "^4.1.0",
"autoprefixer": "^10.4.16",
"eslint": "^8.50.0",
"eslint": "^9.18.0",
"@eslint/js": "^9.18.0",
"typescript-eslint": "^8.22.0",
"eslint-plugin-react": "^7.37.0",
"eslint-plugin-react-hooks": "^5.1.0",
"globals": "^15.0.0",
"postcss": "^8.4.31",
"tailwindcss": "^3.3.3",
"typescript": "^5.2.2",