forked from pandaoh/js-xxx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eslintrc.js
210 lines (210 loc) · 7.12 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
200
201
202
203
204
205
206
207
208
209
210
/*
* @Author: HxB
* @Date: 2023-03-13 15:05:27
* @LastEditors: DoubleAm
* @LastEditTime: 2023-08-24 10:32:45
* @Description: eslint 配置文件
* @FilePath: \js-xxx\.eslintrc.js
*/
module.exports = {
env: {
browser: true,
node: true,
},
extends: ['prettier', 'eslint:recommended', 'plugin:@typescript-eslint/recommended'],
overrides: [],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: ['prettier', '@typescript-eslint', 'spellcheck', 'import', 'zob'],
rules: {
'zob/comment': 'error', // 中英文空格间距 找英文符号正则 ([\u4e00-\u9fa5]\s*[!@#$%^&*_+=;:'"{\[\]},.\/\\`\(\)])
'@typescript-eslint/ban-ts-comment': 'off', // 允许使用 ts 注释
'no-useless-escape': 'warn', // 非必要的转义符号,允许但提示。
'prettier/prettier': [
'error',
{
// trailingComma: 'all',
// arrowParens: 'always',
// htmlWhitespaceSensitivity: 'ignore',
},
{ usePrettierrc: true },
], // prettier 相关的规则必须遵守
'no-undef': ['error'], // 禁止未声明变量的引用
'spaced-comment': ['error', 'always'], // 注释开始后,此规则将强制间距的一致性 // 或 /*。
'space-before-blocks': ['error', 'always'], // 块必须至少有一个先前的空格
'no-multiple-empty-lines': ['error', { max: 5 }], // 最大空行数量
'no-mixed-spaces-and-tabs': ['error', false], // 不允许使用混合空格和制表符进行缩进
'comma-dangle': ['error', 'only-multiline'], // 多行时才可以使用尾随逗号
indent: ['error', 2, { SwitchCase: 1 }], // 强制执行一致的缩进样式
'linebreak-style': ['error', 'windows'], // 强制执行统一的行结尾 CRLF
quotes: ['error', 'single'], // 单引号
semi: ['error', 'always'], // 在语句结尾需要分号
// 'no-unused-vars': ['warn', { vars: 'all', args: 'after-used', ignoreRestSiblings: true }], // @typescript-eslint/no-unused-vars
'@typescript-eslint/no-explicit-any': ['off'], // 允许使用 any 类型,但是我们不要滥用,允许使用是为了不给开发设限,但是该定义的还是要做的。
'no-irregular-whitespace': [
'error',
{ skipStrings: true, skipComments: true, skipRegExps: true, skipTemplates: true },
], // 禁止使用无效或不规则的空格,字符串等特殊情况跳过。
'no-multi-spaces': ['error', { ignoreEOLComments: true }], // 禁止在某些表达式,函数周围使用多个空格,行尾注释除外。
'no-trailing-spaces': ['error', { skipBlankLines: false }], // 禁止行尾添加尾随空白,空行也是一样。
'brace-style': ['error', '1tbs', { allowSingleLine: false }], // 强制执行一个真正的大括号风格,括号必须跟在块后。
'key-spacing': ['warn', { beforeColon: false, afterColon: true }], // 对象 key 与冒号之间不允许使用空格,值与冒号间必须使用空格。
'object-curly-spacing': ['error', 'always'], // 需要大括号内的空格,比如解构赋值,导入导出。
'array-bracket-spacing': ['error', 'never'], // 数组括号内强制实现一致的间距空格
'max-lines': ['error', 800], // 文件限制行数最大 800 行
'max-statements': ['error', 100], // 一个函数限制行数最大 100 行
'spellcheck/spell-checker': [
// 拼写检查警告
'warn',
{
comments: true, // 注释也要检查
strings: true,
identifiers: true,
lang: 'en_US',
skipWords: [
// npm i modules-words // 常用词库
'javascript',
'debounce',
'pathname',
'minify',
'biugle',
'whitesmoke',
'acount',
'uint8',
'charset',
'unmount',
'poweroff',
'resize',
'linux',
'darwin',
'resizable',
'renderer',
'unordered',
'dropdown',
'checkbox',
'tooltip',
'namespaced',
'echarts',
'onopen',
'formatter',
'xlocation',
'xcall',
'utils',
'cordova',
'ionics',
'lodash',
'splashscreen',
'uglify',
'jsonp',
'async',
'bcrypt',
'werbs',
'navbar',
'popover',
'substr',
'zindex',
'viewport',
'validator',
'webserver',
'whitelist',
'runtime',
'proto',
'popup',
'polyfill',
'preload',
'mixin',
'middleware',
'lifecycle',
'linter',
'hostname',
'dirname',
'autocomplete',
'sourcemap',
'dicts',
'undef',
'asyncfunction',
'xxxxx',
'keydown',
'keyup',
'keypress',
'webkit',
'uint8',
'radix',
'storage',
'favicon',
'compat',
'keyframes',
'padlen',
'tring',
'xhtml',
'xmind',
'decrypt',
'decrypted',
'str2html',
'html2str',
'builtins',
'arr2str',
'multipart',
'contextmenu',
'grayscale',
'loadend',
'callee',
'slugify',
'unicode2str',
'str2unicode',
'ciphertext',
'urlencoded',
'cancelable',
'renotify',
'generatorfunction',
'ascii',
'unicode',
'torage',
'xxxxxx',
'arial',
'rollup',
'axios',
'redux',
'unlink',
'macos',
'submenu',
'nodemon',
'hhiiss',
'whitesmoke',
],
skipIfMatch: [
// http url
'http://[^s]*',
// Auxiliary werbs
// see: https://github.com/aotaduy/eslint-plugin-spellcheck/issues/7
"(\\s|^)\\w+'t(\\s|$)",
// ordinals
// https://github.com/aotaduy/eslint-plugin-spellcheck/issues/8
'(\\s|^|\\w+)\\d+(st|nd|rd|th)(\\s|[A-Z][a-zA-Z]+|$)',
// pre/post prefixes both in kebab case and camel case
'(\\s|^)(pre|post)([-\\w]|[A-Z])[a-zA-Z]+(\\s|$)',
// xml tags
'<(?:/)?[\\w-]+>',
// cryptographic octal hashes
'^[0-9a-f]{5,999}$',
// hex colors
'^#[0-9a-f]{3,6}$',
// For MIME Types
'^[-\\w]+/[-\\w\\.]+$',
],
skipWordIfMatch: [
'^foobar.*$', // words that begin with foobar will not be checked
],
minLength: 5, // >=5 个字符以上才监测
},
],
'import/first': ['error'], // 导入必须在最前面
'import/exports-last': ['error'], // 导出必须在最后面
'import/newline-after-import': ['error'], // 导入后必须留出空行
'import/no-duplicates': ['error'], // 同一个文件的导入必须写在一行
'import/order': ['error', { 'newlines-between': 'never' }], // 导入排序
},
};