From be606ece350ca9b1f7f2e6aa540461b3786bc006 Mon Sep 17 00:00:00 2001 From: Felix Schulze Date: Sat, 15 Nov 2025 17:10:45 +0100 Subject: [PATCH] fix eslint --- eslint.config.mjs | 52 +++++++++++++++++++++++------------------------ next-env.d.ts | 2 +- package.json | 1 - pnpm-lock.yaml | 3 --- tsconfig.json | 22 +++++++++++--------- 5 files changed, 38 insertions(+), 42 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index f1d8bf0..2ca9a5b 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,39 +1,37 @@ // @ts-check -import { FlatCompat } from '@eslint/eslintrc'; +import { defineConfig, globalIgnores } from 'eslint/config'; +import nextVitals from 'eslint-config-next/core-web-vitals'; +import nextTs from 'eslint-config-next/typescript'; import tseslint from 'typescript-eslint'; -const compat = new FlatCompat({ - baseDirectory: import.meta.dirname, -}); - -export default [ - // Global ignores - { - ignores: [ - 'node_modules/**', - '.next/**', - 'out/**', - 'build/**', - 'next-env.d.ts', - '*.mjs', - 'tailwind.config.ts', - ], - }, - - // 1. Next.js core rules (includes react, react-hooks, and next) - ...compat.extends('next/core-web-vitals', 'prettier'), - - // 2. Your strict, type-aware TypeScript rules +const eslintConfig = defineConfig([ + // Next.js core-web-vitals and TypeScript configs + ...nextVitals, + ...nextTs, + // Add strict TypeScript rules on top ...tseslint.configs.strictTypeChecked, ...tseslint.configs.stylisticTypeChecked, - - // 3. Configuration for type-aware rules + // Configure TypeScript parser options { + files: ['**/*.{ts,tsx}'], languageOptions: { parserOptions: { - project: true, + projectService: true, tsconfigRootDir: import.meta.dirname, }, }, }, -]; + // Override default ignores of eslint-config-next + globalIgnores([ + // Default ignores of eslint-config-next: + '.next/**', + 'out/**', + 'build/**', + 'next-env.d.ts', + // Additional ignores: + '*.mjs', + 'tailwind.config.ts', + ]), +]); + +export default eslintConfig; diff --git a/next-env.d.ts b/next-env.d.ts index 830fb59..9edff1c 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -/// +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/package.json b/package.json index 15c8a4f..fc781a5 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,6 @@ "tailwind-merge": "^3.3.1" }, "devDependencies": { - "@eslint/eslintrc": "3.3.1", "@tailwindcss/postcss": "4.1.17", "@types/node": "24.10.1", "@types/react": "19.2.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6d474e..a252314 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,9 +34,6 @@ importers: specifier: ^3.3.1 version: 3.4.0 devDependencies: - '@eslint/eslintrc': - specifier: 3.3.1 - version: 3.3.1 '@tailwindcss/postcss': specifier: 4.1.17 version: 4.1.17 diff --git a/tsconfig.json b/tsconfig.json index 40de6ee..311f3d5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, + "allowJs": false, "skipLibCheck": true, "strict": true, "noEmit": true, @@ -10,18 +10,20 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, - "plugins": [ - { - "name": "next" - } - ], + "baseUrl": ".", "paths": { "@/*": ["./*"] }, - "target": "ES2022" + "target": "ES2022", + "forceConsistentCasingInFileNames": true, + "verbatimModuleSyntax": true, + "noUncheckedIndexedAccess": false, + "exactOptionalPropertyTypes": false, + "noImplicitReturns": false, + "plugins": [{ "name": "next" }] }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules", ".next"] + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts"], + "exclude": ["node_modules"] }