forked from seat-checking/web-admin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.eslintrc.js
159 lines (159 loc) · 4.68 KB
/
.eslintrc.js
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
module.exports = {
env: {
browser: true,
es2021: true,
node: true, // module is not defined 오류 해결
},
plugins: ['react', '@typescript-eslint', 'import', '@tanstack/query'],
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:@typescript-eslint/recommended',
// 추가
'airbnb',
'airbnb/hooks',
'airbnb-typescript',
'plugin:react/jsx-runtime',
'plugin:import/recommended',
'plugin:import/typescript',
'prettier',
'plugin:prettier/recommended',
'plugin:@tanstack/eslint-plugin-query/recommended',
],
overrides: [],
parser: '@typescript-eslint/parser',
parserOptions: {
project: './tsconfig.json',
ecmaVersion: 'latest',
sourceType: 'module',
createDefaultProgram: true,
},
// import 에러 해결하기 위해 추가
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
moduleDirectory: ['node_modules', 'src/'],
},
},
},
rules: {
// "off" or 0 - turn the rule off
// "warn" or 1 - turn the rule on as a warning (doesn’t affect exit code)
// "error" or 2 - turn the rule on as an error (exit code is 1 when triggered)
// "no-var": "off",
'no-console': 'warn',
'no-plusplus': 'off',
'no-shadow': 'off',
'vars-on-top': 'off',
'no-underscore-dangle': 'off', // var _foo;
'comma-dangle': 'off',
'func-names': 'off', // setTimeout(function () {}, 0);
'prefer-template': 'off',
'no-nested-ternary': 'off',
'max-classes-per-file': 'off',
'consistent-return': 'off',
'no-restricted-syntax': ['off', 'ForOfStatement'], // disallow specified syntax(ex. WithStatement)
'prefer-arrow-callback': 'error', // Require using arrow functions for callbacks
'require-await': 'error',
'arrow-parens': ['warn', 'always'], // 화살표 함수 매개변수에 괄호 넣도록 강제시킴
'no-param-reassign': ['error', { props: false }],
'no-unused-expressions': [
'error',
{
allowTernary: true, // a || b
allowShortCircuit: true, // a ? b : 0
allowTaggedTemplates: true,
},
],
'import/no-extraneous-dependencies': ['error', { devDependencies: true }],
'max-len': [
'error',
{
code: 120,
ignoreComments: true,
ignoreStrings: true,
ignoreTemplateLiterals: true,
},
], // prettier의 printWidth 옵션 대신 사용
// 커스텀 셋팅 추가
// prop-type validation 끔 (typescript가 컴파일 타임에 잡아주므로)
'react/prop-types': 'off',
// import react 강제성 끔 (react ver 17부턴 해줄 필요 없음)
'react/react-in-jsx-scope': 'off',
'react/jsx-props-no-spreading': 'off',
'react/require-default-props': 'off', // TODO 개선 시 warn으로 변경 예정, 옵셔널 타입 지정 가능하도록 함
'react/self-closing-comp': [
'error',
{
component: true,
html: true,
},
],
// type 은 따로 import 시킴
'@typescript-eslint/consistent-type-imports': [
'error',
{
prefer: 'type-imports',
},
],
// jsx 코드 하단에 스타일 선언하기 위함
'@typescript-eslint/no-use-before-define': 'off',
// 사용하지 않는 변수에 error 대신 warn 사용, 코드 테스트할 때 불편하기 때문
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/no-unused-expressions': 'warn',
'import/order': [
'error',
{
groups: [
'builtin',
'external',
'parent',
'sibling',
'index',
'object',
'type',
],
pathGroups: [
{
pattern: '@/**/**',
group: 'parent',
position: 'before',
},
],
alphabetize: { order: 'asc' },
},
],
'no-restricted-imports': [
'error',
{
patterns: ['../'],
},
],
// arrow function으로 컴포넌트 정의하도록 강제
'react/function-component-definition': [
2,
{ namedComponents: 'arrow-function' },
],
'react-hooks/exhaustive-deps': 'warn', // 디펜던시 빠진 것들 모두 추가하도록 함
// '@typescript-eslint/explicit-function-return-type': 'off',
// default export 선호 끔
'import/prefer-default-export': 'off',
'@typescript-eslint/ban-types': [
'error',
{
types: {
// un-ban a type that's banned by default
'{}': false,
},
},
],
// 윈도우에서 delete CR 오류뜨는 것을 막기 위함
'prettier/prettier': [
'error',
{
endOfLine: 'auto',
},
],
},
};