-
Notifications
You must be signed in to change notification settings - Fork 1
/
esnext.js
154 lines (123 loc) · 5.05 KB
/
esnext.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
module.exports = {
extends: ['./index.js'],
env: {
es6: true,
node: true,
browser: true,
commonjs: true,
'shared-node-browser': true
},
parserOptions: {
ecmaVersion: 6,
sourceType: 'module'
},
rules: {
// Node
// 禁止调用 require 时使用 new 操作符
'no-new-require': [2],
// ES6
// --fix: 要求箭头函数体使用大括号
'arrow-body-style': ['error', 'as-needed'],
// --fix: 要求箭头函数的参数使用圆括号
'arrow-parens': ['error', 'as-needed', {
// 如果函数体在一个指令块中(被花括号括起来)要求使用圆括号把参数括起来
requireForBlockBody: true
}],
// --fix: 强制箭头函数的箭头前后使用一致的空格
'arrow-spacing': ['warn', {
before: true,
after: true
}],
// 要求在构造函数中有 super() 的调用
'constructor-super': 'error',
// --fix: 强制 generator 函数中 * 号周围使用一致的空格
'generator-star-spacing': ['warn', {
before: true,
after: false
}],
// 禁止修改类声明的变量
'no-class-assign': 'error',
// 在可能与数值对比造成混淆处禁用箭头函数,allowParens 为 true 时放宽规则,接受使用圆括号预防混淆
'no-confusing-arrow': ['error', {
allowParens: true
}],
// 禁止修改 const 声明的变量
'no-const-assign': 'error',
// 禁止类成员中出现重复的名称
'no-dupe-class-members': 'error',
// 不允许从同一路径多次 import
'no-duplicate-imports': ['error', {
includeExports: false
}],
// 禁止调用 Symbol 使用 new 操作符
'no-new-symbol': 'error',
// 禁止引入限制 import 的资源
'no-restricted-imports': 'off',
// 禁止在构造函数中,在调用 super() 之前使用 this 或 super
'no-this-before-super': 'error',
// --fix: 禁止对象上不必要的属性计算
'no-useless-computed-key': 'error',
// 禁用不必要的构造函数
'no-useless-constructor': 'error',
// --fix: 禁止在 import、export 和解构中进行不必要的重命名
'no-useless-rename': ['error', {
ignoreDestructuring: false,
ignoreImport: false,
ignoreExport: false
}],
// --fix: 要求使用 let 或 const,禁止使用 var
'no-var': 'error',
// --fix: 要求对象字面量中方法和属性使用简写语法
// @TODO: 'always' => 'consistent-as-needed':保证对象字面量的简写或非简写一致性,但尽可能的全部使用简写
'object-shorthand': ['error', 'always', {
// 忽略构造函数,允许不简写
ignoreConstructors: false,
// 忽略字符串字面量属性,允许不简写
avoidQuotes: true
}],
// --fix: 要求使用箭头函数作为回调
'prefer-arrow-callback': ['warn', {
allowNamedFunctions: false,
allowUnboundThis: true
}],
// --fix: 要求使用 const 声明那些声明后不再被修改的变量
// TODO: enable
'prefer-const': ['off', {
destructuring: 'any',
ignoreReadBeforeAssign: true
}],
// 在数组和对象中,使用解构代替成员表达式访问属性
// TODO: enable
'prefer-destructuring': ['off', {
array: true,
object: true
}, {
enforceForRenamedProperties: false
}],
// --fix: ES6 支持二进制、八进制及十六进制的直接使用,禁止 parseInt() 对他们的转换
// @TODO: enable
'prefer-numeric-literals': 'off',
// 使用 rest 参数获取多余参数,而不是使用 arguments 对象
'prefer-rest-params': 'error',
// --fix: 要求使用扩展运算符而非 .apply()
'prefer-spread': 'error',
// --fix: 要求使用模板字面量而非字符串连接
'prefer-template': 'error',
// 要求 generator 函数内有 yield
'require-yield': 'error',
// --fix: 强制 rest 参数中, ... 与参数名之间不能存在空格
'rest-spread-spacing': ['warn', 'never'],
// 强制模块内的 import 排序
'sort-imports': ['off', {
ignoreCase: false,
ignoreMemberSort: false,
memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single']
}],
// 使用 Symbol 时强制输入描述,如:Symbol(description)
'symbol-description': 'error',
// --fix: 禁止模板字符串中的嵌入表达式周围空格的使用
'template-curly-spacing': 'warn',
// --fix: 强制在 yield* 表达式中 * 周围使用空格
'yield-star-spacing': ['warn', 'before']
}
};