-
-
Notifications
You must be signed in to change notification settings - Fork 20.6k
Expand file tree
/
Copy patheslint.config.mjs
More file actions
46 lines (44 loc) · 1.53 KB
/
eslint.config.mjs
File metadata and controls
46 lines (44 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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;