Files
awesome-chatgpt-prompts-pro…/eslint.config.mjs
2026-02-03 13:12:56 +03:00

47 lines
1.5 KiB
JavaScript

import { defineConfig, globalIgnores } from "eslint/config";
import nextVitals from "eslint-config-next/core-web-vitals";
import nextTs from "eslint-config-next/typescript";
const eslintConfig = defineConfig([
...nextVitals,
...nextTs,
// Override default ignores of eslint-config-next.
globalIgnores([
// Default ignores of eslint-config-next:
".next/**",
"out/**",
"build/**",
"next-env.d.ts",
// Compiled outputs
"packages/*/dist/**",
// Packages with their own ESLint config
"packages/raycast-extension/**",
// Scripts - may use CommonJS
"scripts/**",
// Prisma scripts
"prisma/**",
]),
// Downgrade strict rules to warnings for gradual adoption
{
rules: {
// React hooks compiler rules - many false positives in complex state patterns
"react-hooks/set-state-in-effect": "warn",
"react-hooks/immutability": "warn",
"react-hooks/refs": "warn",
"react-hooks/preserve-manual-memoization": "warn",
// JSX entity escaping - affects many existing components
"react/no-unescaped-entities": "warn",
// Function type - affects test mocks
"@typescript-eslint/no-unsafe-function-type": "warn",
// Display name - affects anonymous components
"react/display-name": "warn",
// HTML links - sometimes needed for external/special navigation
"@next/next/no-html-link-for-pages": "warn",
// Children as props - used in some component patterns
"react/no-children-prop": "warn",
},
},
]);
export default eslintConfig;