-
Notifications
You must be signed in to change notification settings - Fork 12
/
.eslintrc.js
199 lines (199 loc) · 6.81 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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
module.exports = {
env: {
browser: true,
es2021: true
},
extends: [
'plugin:react/recommended',
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
'prettier'
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaFeatures: {
jsx: true
},
ecmaVersion: 12,
sourceType: 'module',
},
plugins: ['react', '@typescript-eslint'],
overrides: [ // 单独设定某些文件的规则
{
files: 'src/api/**/*.ts',
rules: {
camelcase: 'off' // 不使用驼峰命名
}
}
],
rules: {
'prettier/prettier': 'error',
'accessor-pairs': 2, // 强制 getter 和 setter 在对象中成对出现
'array-bracket-spacing': [2, 'never'], // 是否允许非空数组里面有多余的空格
'arrow-spacing': [
2,
{
before: true,
after: true
}
], // 强制箭头函数的箭头前后使用一致的空格
'block-spacing': [2, 'always'], // 禁止或强制在代码块中开括号前和闭括号后有空格 (要求使用一个或多个空格)
'brace-style': [
2,
'1tbs',
{
allowSingleLine: true
}
], // if while function 后面的{必须与if在同一行,java风格。
camelcase: [
1,
{
properties: 'always',
}
], // 强制驼峰法命名
'comma-dangle': ['error', 'never'], // 括号最后一个元素后面不用强制加逗号
'comma-spacing': [
2,
{
before: false,
after: true
}
], // 控制逗号前后的空格
'comma-style': [2, 'last'], // 控制逗号在行尾出现还是在行首出现
'dot-location': [2, 'property'],
'eol-last': 2, // 文件末尾强制换行
eqeqeq: [2, 'allow-null'], // 使用 === 替代 ==
'generator-star-spacing': 'off', // 生成器函数*的前后空格
indent: [
2,
2,
{
SwitchCase: 1
}
], // 缩进风格
// JSX 属性中一致使用双引号或单引号
'jsx-quotes': [2, 'prefer-double'],
// 对象字面量中冒号的前后空格
'key-spacing': [
2,
{
beforeColon: false,
afterColon: true
}
],
'keyword-spacing': [
2,
{
before: true,
after: true
}
], // 强制在关键字前后使用一致的空格
'linebreak-style': [0, 'error', 'windows'],
'max-len': ['error', { code: 150 }],
// 函数名首行大写必须使用new方式调用,首行小写必须用不带new方式调用
'new-cap': [
2,
{
newIsCap: true,
capIsNew: false
}
],
'new-parens': 2, // new时必须加小括号
'no-array-constructor': 2, // 禁止使用数组构造器
'no-caller': 2, // 禁止使用arguments.caller或arguments.callee
'no-console': 0, // 可以使用console
'no-debugger': 0, // 禁止使用debugger
'no-empty-character-class': 0, // 正则表达式中的[]内容不能为空
'no-empty-pattern': 0,
'no-eval': 0, // 禁止使用eval
'no-extend-native': 2, // 禁止扩展native对象
'no-extra-bind': 2, // 禁止不必要的函数绑定
'no-extra-parens': [2, 'functions'], // 禁止非必要的括号
'no-extra-semi': 0, // 禁止多余的冒号
'no-floating-decimal': 2, // 禁止省略浮点数中的0 .5 3.
'no-implied-eval': 2, // 禁止使用隐式eval
'no-label-var': 2, // label名不能与var声明的变量名相同
'no-lone-blocks': 2, // 禁止不必要的嵌套块
'no-multi-spaces': 2, // 不能用多余的空格
'no-multi-str': 2, // 禁止使用多行字符串
'no-multiple-empty-lines': [
2,
{
max: 2
}
], // 空行最多不能超过2行
'no-new-object': 2, // 禁止使用new Object()
'no-new-require': 2, // 禁止使用new require
'no-new-wrappers': 2, // 禁止对 String,Number 和 Boolean 使用 new 操作符
'no-obj-calls': 0, // 不能调用内置的全局对象,比如Math() JSON()
'no-return-assign': [2, 'except-parens'], // return 语句中不能有赋值表达式
'no-sequences': 2, // 禁止使用逗号运算符
'no-spaced-func': 2, // 函数调用时 函数名与()之间不能有空格
'no-sparse-arrays': 0, // 禁止稀疏数组, [1,,2]
'no-trailing-spaces': 2, // 一行结束后面不要有空格
'no-undef': 0, // 不能有未定义的变量
'no-unexpected-multiline': 0, // 避免多行表达式
'no-unmodified-loop-condition': 0, // 检查引用是否在循环中被修改
'no-unneeded-ternary': 2, // 禁止不必要的三元表达式 var isYes = answer === 1 ? true : false;
'no-unused-expressions': 'off', // 禁止无用的表达式
'no-unsafe-finally': 0, // 禁止在 finally 语句块中出现控制流语句
'no-useless-call': 2, // 禁止不必要的call和apply
'no-useless-computed-key': 0, // 禁止在对象中使用不必要的计算属性
'no-useless-constructor': 2, // 可以在不改变类的工作方式的情况下安全地移除的类构造函数
'no-whitespace-before-property': 0,
'object-curly-spacing': [
2,
'always',
{
objectsInObjects: false
}
], // 大括号内是否允许不必要的空格
'one-var': 0, // 禁止连续声明
'operator-linebreak': [
2,
'after',
{
overrides: {
'?': 'before',
':': 'before',
}
}
], // 换行时运算符在行尾还是行首
'padded-blocks': 0, // 块语句内行首行尾是否要空行
quotes: [
2,
'single',
{
avoidEscape: true,
allowTemplateLiterals: true
}
], // 强制使用一致的反勾号、双引号或单引号
'quote-props': 0, // 属性名不限制
'require-jsdoc': 0,
semi: [2, 'always'], // 语句强制分号结尾
'semi-spacing': [
2,
{
before: false,
after: true
}
], // 分号前后空格
'space-before-blocks': [2, 'always'], // 不以新行开始的块{前面要不要有空格
'space-before-function-paren': [0, 'always'], // 函数定义时括号前面没有空格也不会报错
'space-in-parens': [2, 'never'], // 小括号里面要不要有空格
'space-infix-ops': 2, // 中缀操作符周围要不要有空格
'space-unary-ops': [
2,
{
words: true,
nonwords: false
}
], // 一元运算符的前/后要不要加空格
'spaced-comment': [2, 'always'], // 强制在注释中 // 或 /* 使用一致的空格
'template-curly-spacing': [2, 'never'], // 要求或禁止模板字符串中的嵌入表达式周围空格的使用
yoda: [2, 'never'], // 禁止尤达条件
'prefer-const': 2 // 要求使用 const 声明那些声明后不再被修改的变量
}
};