-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eslintrc.js
247 lines (243 loc) · 7.93 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
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
/* eslint quotes: false*/
module.exports = {
"settings": {
//用于支持webpack定义的别名 (需要安装 eslint-plugin-import 和 eslint-import-resolver-webpack 插件)
// "import/resolver": "webpack",
},
"env": {
"browser": true,
"node": false,
"es6": true,
"mocha": false,
"commonjs": true,
"amd": false,
},
"extends": [
"plugin:flowtype/recommended"
],
"plugins": [
"flowtype", // 插件地址 https://github.com/gajus/eslint-plugin-flowtype
// "react", // 插件地址 https://github.com/yannickcr/eslint-plugin-react
// "import" // 插件地址 https://github.com/benmosher/eslint-plugin-import
],
"globals": {
"__webpack_public_path__": true,
"process": true,
"__dirname": true,
"CFG": true, // VM配置全局变量
"_": true, // lodash 全局变量
"React": true,
"ReactDom": true,
"KISSY": false,
"TB": false,
"JSTracker": false,
"JSTracker2": false,
"$": false, // Kimi 全局变量
"goldlog": true, // 黄金令箭
"WindVane": false, // 手淘环境
},
"parser": "babel-eslint",
"rules": {
// ES6 规则
// http://gitlab.alibaba-inc.com/specs/style-guide/issues/50#96
"prefer-const": 0,
"no-const-assign": 2,
"no-class-assign": 2,
"no-dupe-class-members": 2,
"rest-spread-spacing": 2,
"no-duplicate-imports": 2,
"no-useless-rename": 2,
"arrow-spacing": 2,
"no-useless-computed-key": 2,
"template-curly-spacing": 2,
"generator-star-spacing": [1, {"before": false, "after": true}],
"yield-star-spacing": [1, {"before": false, "after": true}],
/**
* 最佳实践
*/
"strict": [0, "global"],
"global-strict": [0, "always"], // deprecated rule, 忽略,采用上面规则限制
"no-extra-strict": 0,
"no-shadow": 1, // 局部变量和外层变量重名
"no-unused-vars": [1, { // 局部变量未使用
"vars": "local",
"args": "after-used",
"varsIgnorePattern": "createElement"
}],
"no-undef": 2, // 未定义的变量
"no-unused-expressions": 1, // 未使用的表达式
"no-use-before-define": 0, // 允许定义前使用
"yoda": 0,
"eqeqeq": 0,
"no-new": 0, // 允许 new 创建的对象没有被引用
"consistent-return": 0, // 允许没有 return
"dot-notation": [2, { // 操作对象属性时,优先使用 . 操作
"allowKeywords": true
}],
"no-extend-native": 2, // 禁止通过 prototype 给原生对象增加额外方法。
"no-native-reassign": 2, // 阻止复写内置类型
"no-return-assign": 2, // 是否允许 return 返回表达式
"no-constant-condition": [2, {
"checkLoops": false
}], // 提示拒绝使用已经明确意义的判断条件 if (true)
"max-len": [
1,
200,
2, {
"ignoreComments": true,
"ignoreUrls": true
}
],
"no-caller": 2,
"no-loop-func": 1,
// nodejs 环境规则
//"no-console": "warn", // 代码禁止出现 console
"no-catch-shadow": 2, // try catch 捕获的变量名禁止重名定义
"no-new-require": 0, // require 前面是否能添加 new
"no-mixed-requires": [0, false], // 是否合并 var requires
"no-path-concat": 0, // 是否可以自行拼接 path 还是必须要引用 path 模块
"handle-callback-err": 0, // 代码里面是否有处理 err 的逻辑?
/**
* 代码风格
*/
"no-empty": 0, // 允许空 block 语句
"indent": [2, 2, { // 缩进
"SwitchCase": 1
}],
"camelcase": [1, { // 驼峰,同时检查属性名
"properties": "always"
}],
"quotes": [2, "single", "avoid-escape"], // 引号,强制使用单引号
"brace-style": [2, "1tbs", {
"allowSingleLine": false
}],
"comma-spacing": [2, { // 逗号空格
"before": false,
"after": true
}],
"comma-style": [2, "last"], // 逗号风格
"eol-last": 0, // 最后留一行空行
"func-names": 0, // 是否所有函数必须命名
"new-cap": [1, { // 类名首字母大写
"newIsCap": true
}],
"key-spacing": [2, { // object 的 key value :的前后空格
"beforeColon": false,
"afterColon": true
}],
"no-multi-spaces": 2, // 表达式中是否允许多个空格
"no-multiple-empty-lines": 0, // 是否允许多行空格
"no-nested-ternary": 0, // 是否禁止三目运算
"no-new-object": 2, // 禁止 new Object()
"no-spaced-func": 2, // 函数与括号的空格
"no-trailing-spaces": 0, // 是否允许末尾有空格
"no-extra-parens": [1, "functions"], // "no-wrap-func": 1, 禁止额外的括号 允许括号内是方法
"no-underscore-dangle": 0, // 允许任意使用下划线
"one-var": [1, "never"], // 定义变量一行一个
"padded-blocks": [0, "never"], // 块代码上下不能留空行
"semi": 2, // 校验分号
"semi-spacing": 2, // 分号后面留空
"keyword-spacing": 2, // 关键词后面加空格
"space-before-blocks": 2, // 块级代码加空格
"space-before-function-paren": [2, "never"], // 函数名与括弧之间空格
"space-infix-ops": 2, // 操作符之间的空格
"spaced-comment": [1, "always", {
"line": {
"markers": ["/"],
"exceptions": ["-", "+"]
},
"block": {
"markers": ["!"],
"exceptions": ["*"],
"balanced": true
}
}], // 注释斜线后面是否需要空格
/**
* === flowtype ===
*/
/*"flowtype/boolean-style": [
2,
"boolean"
],
"flowtype/define-flow-type": 1,
"flowtype/delimiter-dangle": [
2,
"never"
],
"flowtype/generic-spacing": [
2,
"never"
],
"flowtype/no-primitive-constructor-types": 2,
"flowtype/no-types-missing-file-annotation": 2,
"flowtype/no-weak-types": 2,
"flowtype/object-type-delimiter": [
2,
"comma"
],
"flowtype/require-parameter-type": 2,
"flowtype/require-return-type": [
2,
"always",
{
"annotateUndefined": "never"
}
],
"flowtype/require-valid-file-annotation": 2,
"flowtype/semi": [
2,
"always"
],
"flowtype/space-after-type-colon": [
2,
"always"
],
"flowtype/space-before-generic-bracket": [
2,
"never"
],
"flowtype/space-before-type-colon": [
2,
"never"
],
"flowtype/type-id-match": [
2,
"^([A-Z][a-z0-9]+)+Type$"
],
"flowtype/union-intersection-spacing": [
2,
"always"
],
"flowtype/use-flow-type": 1,
"flowtype/valid-syntax": 1,*/
/**
* React JSX 规范
*/
/*"react/display-name": 0, // 是否显示 Component 名称
"react/jsx-boolean-value": [0, "always"], // 传递布尔值时是否明确支持
"jsx-quotes": [2, "prefer-double"], // jsx 属性值用双引号
"react/jsx-no-undef": 2, // 判断 jsx 是否已经定义
"react/jsx-sort-props": 0, // 是否排序 props
"react/jsx-sort-prop-types": 0, // 是否排序 prop types
"react/jsx-uses-react": 2, // 组件中中是否用了 react
"react/jsx-uses-vars": 2, // 定义了 jsx component 没有使用
"react/no-did-mount-set-state": 0, // 不要在 componentDidMount 里面设置 state
"react/no-did-update-set-state": 0, // 同上
"react/no-multi-comp": 0, // 一个文件里面禁止声明多个 component
"react/no-unknown-property": 2, // 检查 class、for 属性是否转义
"react/prop-types": 0, // 不强制设置 proptypes
"react/react-in-jsx-scope": 1, // 查看 jsx 是否引入 react
"react/self-closing-comp": 2, // 检查是否有没有 children 的非子闭合标签
"react/jsx-wrap-multilines": 1, // 不强制 return 的时候,结构的格式
"react/sort-comp": [0, { // 不强制 createClass 属性的排序
"order": [
"lifecycle",
"/^on.+$/",
"/^(get|set)(?!(InitialState$|DefaultProps$|ChildContext$)).+$/",
"everything-else",
"/^render.+$/",
"render"
]
}]*/
}
};