-
Notifications
You must be signed in to change notification settings - Fork 4
/
.eslintrc.yaml
128 lines (128 loc) · 4.25 KB
/
.eslintrc.yaml
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
---
root: true # Disables inheritance from parent config.
extends:
- eslint:recommended
- plugin:import/recommended
- plugin:import/typescript
# Add IDE support for Next.js' linting rules
# Note that running `next lint` will provide different results than running `eslint` which is why we prefer to run `eslint`.
# @see https://github.com/vercel/next.js/issues/39565
- next/core-web-vitals
- plugin:unicorn/recommended
- plugin:prettier/recommended
settings:
import/resolver:
node:
extensions:
- '.js'
- '.jsx'
- '.ts'
- '.tsx'
# Uses `eslint-import-resolver-typescript` to support the `exports` syntax in `package.json`
# @see https://github.com/import-js/eslint-import-resolver-typescript
typescript:
alwaysTryTypes: true
rules:
# Increase the level to 'error' for unused variables (the default is set to 'warning')
# @see https://eslint.org/docs/latest/rules/no-unused-vars
no-unused-vars:
- error
- args: all
# The Unicorn plugin comes with opinionated checks, including some that we prefer disabling.
'unicorn/no-array-for-each':
# Performance is no longer an issue - we prefer `forEach` for readability.
- off
'unicorn/numeric-separators-style':
# Doesn't add a lot of value and makes numbers look odd.
- off
'unicorn/prefer-type-error':
# Not really applicable when using TypeScript (mostly triggers false positives).
- off
overrides:
# TypeScript configurations
- files:
- '*.ts'
- '*.mts'
- '*.cts'
- '*.tsx'
parser: '@typescript-eslint/parser'
parserOptions:
project:
- 'tsconfig.json'
extends:
- plugin:@typescript-eslint/recommended
- plugin:@typescript-eslint/recommended-requiring-type-checking
rules:
# Increase the level to 'error' for unused variables (the default is set to 'warning')
# @see https://typescript-eslint.io/rules/no-unused-vars/
no-unused-vars: off
'@typescript-eslint/no-unused-vars':
- error
# Show errors when missing return types are missing on relevant functions
# @see https://typescript-eslint.io/rules/explicit-function-return-type/
'@typescript-eslint/explicit-function-return-type':
- error
- allowExpressions: true
allowConciseArrowFunctionExpressionsStartingWithVoid: true
# React-only config: allow passing a callback function in React (e.g. click events) while checking for promises
# @see https://typescript-eslint.io/rules/no-misused-promises/
'@typescript-eslint/no-misused-promises':
- error
- checksVoidReturn:
arguments: false
attributes: false
# Checks members (classes, interfaces, types) and applies consistent ordering.
# @see https://typescript-eslint.io/rules/member-ordering/
'@typescript-eslint/member-ordering':
- error
- default:
# Only use basic types to avoid intrusive rules.
memberTypes:
- field
- constructor
- method
# Filenames: Next.js pages must be `kebabCase` other than dynamic routes
- files:
- 'pages/**/*'
rules:
'unicorn/filename-case':
- error
- case: kebabCase
ignore:
- ^(.*\/)?(\[.+\])\.(jsx|tsx)$
# Filenames: components must be `PascalCase`
- files:
- 'src/components/**/*'
rules:
'unicorn/filename-case':
- error
- case: pascalCase
# Filenames: messages must be `camelCase`
- files:
- 'src/messages/**/*'
rules:
'unicorn/filename-case':
- error
- case: camelCase
# Disable common acronym checks
- files:
- '**/*'
rules:
'unicorn/prevent-abbreviations':
- error
- ignore:
# The acronyms `ref` is too common in React (e.g., `useRef`) to avoid using it.
- 'ref'
- 'Ref'
# The acronyms `props` is too common in React to avoid using it.
- 'props'
- 'Props'
# Fix checks for `next-env.d.ts`
- files:
- 'next-env.d.ts'
rules:
'unicorn/prevent-abbreviations':
- error
- ignore:
# This is a Next.js file and we cannot rename `next-env.d.ts`.
- 'env'