-
Notifications
You must be signed in to change notification settings - Fork 11
/
.eslintrc.yaml
142 lines (142 loc) · 4.92 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
---
root: true # Disables inheritance from parent config.
env:
browser: true
node: true
es6: true
plugins:
- prefer-arrow-functions
- eslint-plugin-tsdoc
- json-files
extends:
- eslint:recommended
- plugin:import/recommended
- plugin:import/typescript
- plugin:react/recommended
- plugin:react/jsx-runtime
- plugin:react-hooks/recommended
- plugin:unicorn/recommended
- plugin:jsx-a11y/recommended
- plugin:cypress/recommended
- plugin:prettier/recommended
settings:
react:
version: detect
import/resolver:
node:
extensions:
- '.js'
- '.jsx'
- '.ts'
- '.tsx'
- '.json'
# 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
# Make sure there is always a space before comments.
# @see https://eslint.org/docs/latest/rules/spaced-comment
spaced-comment:
- error
# Enforce multiline comments to use the /* syntax.
# @see https://eslint.org/docs/latest/rules/multiline-comment-style
multiline-comment-style:
- warn
# Prevent omission of curly brace (e.g. same-line if/return).
# @see https://eslint.org/docs/latest/rules/curly
curly:
- error
# Requires the `engines` field in package.json.
# @see https://github.com/kellyselden/eslint-plugin-json-files/blob/master/docs/rules/require-engines.md
'json-files/require-engines':
- error
# Requires the `license` field in package.json.
# @see https://github.com/kellyselden/eslint-plugin-json-files/blob/master/docs/rules/require-license.md
'json-files/require-license':
- error
# Prevents dependency collisions between `dependencies` and `devDependencies` in package.json.
# @see https://github.com/kellyselden/eslint-plugin-json-files/blob/master/docs/rules/require-unique-dependency-names.md
'json-files/require-unique-dependency-names':
- error
# Use sort-package-json to keep your keys in a predictable order.
# @see https://github.com/kellyselden/eslint-plugin-json-files/blob/master/docs/rules/sort-package-json.md
'json-files/sort-package-json':
- error
# 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
'prefer-arrow-functions/prefer-arrow-functions':
# There is no recommended configuration to extend so we have to set it here to enforce arrow functions.
# @see https://github.com/JamieMason/eslint-plugin-prefer-arrow-functions
- warn
- classPropertiesAllowed: false
disallowPrototype: false
returnStyle: unchanged
singleReturnOnly: false
overrides:
# Disable abbreviation check on Cypress' `e2e` file.
- files:
- 'cypress/support/*'
rules:
'unicorn/prevent-abbreviations':
- error
- ignore:
- '^e2e$'
# The acronyms `props` is too common in React to avoid using it.
- files:
- 'src/**/*'
rules:
'unicorn/prevent-abbreviations':
- error
- ignore:
- 'props'
- 'Props'
# TypeScript configurations.
- files:
- '*.ts'
- '*.mts'
- '*.cts'
- '*.tsx'
parser: '@typescript-eslint/parser'
parserOptions:
project:
- 'tsconfig.json'
- 'cypress/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
# 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