-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
161 lines (159 loc) · 9 KB
/
index.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
// 所有的 eslint 的规则网址:http://eslint.org/docs/rules/
// 工程使用时使用此基础规则:https://github.com/kaola-fed/eslint-config-kaola
module.exports = {
"parserOptions": {
"ecmaVersion": 5,
"sourceType": "script",
"ecmaFeatures": {}
},
"env": {
"browser": true
},
"globals": {
"define": true,
"nej": true,
"NEJ": true,
"Regular": true,
"nes": true,
"Promise": true,
"WeixinJSBridge": true,
"QRCode": true,
"KMUI": true
},
"rules": {
"semi": [2, "always"], // 要求在行末加上分号
"semi-spacing": [1, {"before": false, "after": true}], // 该规则用来规定分号前后是否加空格,默认配置为「分号后面加空格,前面不加空格」
"no-mixed-spaces-and-tabs": 2, //不允许空格和 tab 混用
"indent": [2, 4, {
// case 用一个缩进
"SwitchCase": 1,
// 变量声明用一个缩进
"VariableDeclarator": 1,
"outerIIFEBody": 1,
"MemberExpression": 1,
"FunctionDeclaration": {"body": 1, "parameters": 2},
"FunctionExpression": {"body": 1, "parameters": 2},
"CallExpression": {"arguments": 1}
}], // 缩进设置为 4 个空格
"no-multiple-empty-lines": [2, { "max": 2, "maxEOF": 1}], // 不要留超过规定数目的空白行
"space-before-function-paren": [1, "never"], // 禁止在 function 的左括号之前使用空格
"space-in-parens": [1, "never"], // 禁止在圆括号内使用空格, ( 左括号右边和右括号左边 )
"quotes": [1, "single"], // 单引用
"quote-props": [2, "as-needed"], // 当没有严格要求时,禁止对象字面量属性名称使用引号
"array-bracket-spacing": [1, "never"], // 数组前后不能带空格
"camelcase": 2, // 强制使用驼峰命名
"no-inner-declarations": [2, "functions"], // warning 块内定义函数
// 禁止拖尾逗号
"comma-dangle": [2, {
"arrays": "never",
"objects": "never",
"imports": "never",
"exports": "never",
"functions": "never"
}],
"comma-spacing": [1, {"before": false, "after": true}], // 逗号前禁止有空格, 逗号后必须有空格
"comma-style": [2, "last"], // 禁止逗号前置
"brace-style": [2, "1tbs"], // 强制使用 1tbs 风格的代码块括号,见 http://eslint.cn/docs/rules/brace-style
"func-call-spacing": [2, "never"], // 禁止函数调用时括号左边有空格
"key-spacing": [1, {
"beforeColon": false,
"afterColon": true,
"mode": "strict"
}], // 对象键值对的冒号前禁止有空格, 冒号后必须有空格
"no-irregular-whitespace": 2, // 禁止使用不合法或者不规则的空白符
"no-negated-in-lhs": 2, // 在 in 操作符左边的操作项不能用 ! 例如这样写不对的:if ( !a in b) { // dosomething }
"no-obj-calls": 2, // 禁止把全局对象当函数调用,比如下面写法错误的:Math(), JSON()
"no-regex-spaces": 2, //禁止在正则表达式字面量中使用多个空格 /foo bar/
"no-debugger": 2, // 禁用 debugger
"no-dupe-args": 2, // 禁止 function 定义中出现重名参数
"no-dupe-keys": 2, // 禁止对象字面量中出现重复的 key
"no-func-assign": 2, // 禁止对 function 声明重新赋值
"max-depth": [2, 5], // 检查块语句大括号的最大可嵌套深度
"max-len": [2, 160], // 一行最多 160 个字符
"max-nested-callbacks": [2, 5], // 一个函数的最大嵌套
"max-statements": [2, 40], // 一个函数最大语句数
"complexity": [1, 20], // 用来控制函数的复杂度,{} 大括号对数不能超过 20 对
"default-case": 2, // 所有的 switch 语句都必须要有一个 default 分支
"guard-for-in": 1,
// 代码块的内容不能为空,禁止空代码块
// if (foo) {
// }
// while (foo) {
// }
"no-empty": 2,
"no-empty-function": 1, // warning 空函数
// 禁止在 return、throw、continue 和 break 语句之后出现不可达代码
/*
function foo() {
return true;
console.log("done");
} // 错误
*/
"no-unreachable": 2,
"no-global-assign": 2,
// 禁止出现令人困惑的多行表达式
// var foo = bar
// (1 || 2).baz();
"no-unexpected-multiline": 2,
"no-sparse-arrays": 2, // 禁止稀疏数组,清除多余的逗号声明,比如 [1, , 2]
"no-shadow-restricted-names": 2, // 声明变量时禁止覆盖 JavaScript 中的一些保留关键字,比如 NaN、Infinity、undefined、eval、arguments 等
"no-undef": 2, // 禁止使用未被定义的变量,除非已在配置文件的 global 中进行了说明
"no-unused-vars": 2, //不允许定义的变量在后面的代码中没有被使用到
"no-use-before-define": 2, // 所有的变量都应该先定义后使用
"block-scoped-var": 0, // 当在代码块中用var声明变量,并在代码块外使用时报错
"eqeqeq": [0], // 在进行比较时,必须使用全等 === 和完全不等 !==
"no-alert": [1], // 不允许 alert, confirm, prompt
"no-caller": [1], // 禁止使用 arguments.caller 和 arguments.callee
// 禁止在 case/default 语句中使用 lexical declarations,例如 let, const, function and class
// 因为在 case/default 中的声明,在整个 switch 语句中都能够访问到,如果需要声明变量,可以加大括号。
// 不能使用看起来像除法的正则表达式
// 用来消除 /(除号)操作符对程序员的迷惑,比如在正则表达式 /=foo/ 中,我们并不能够确定第一个 / 是除号还是正则表达式,因此我们需要在等号前面加一个转移符 /\=foo/
"no-div-regex": 2,
"no-case-declarations": 2,
"dot-notation": [2, {"allowKeywords": true}], // 强制使用 . 号取属性,关键字属性时用 []
"no-cond-assign": 2, // 禁止条件表达式中出现赋值操作符
"no-else-return": 1, // 在 if else 语句中,如果 else 语句中只含有一个 return 语句,那么完全可以不使用 else 语句,直接 return
"no-multi-spaces": 1, // 保证了在逻辑表达式、条件表达式、申明语句、数组元素、对象属性、sequences、函数参数中不使用超过一个的空白符
"no-proto": 2, // 禁止使用 __proto__ 属性
"no-multi-str": 1, // 多行字符串要相加,而不是用链接符\
"no-new-wrappers": 2, // 禁止使用 new 创建 String, Number, and Boolean 实例
"no-array-constructor": 2, // 禁止对 Array 使用 new 操作符
"no-loop-func": 2, // 禁止在循环体中定义函数并且函数引用了外部变量,在循环中定义了函数,但是函数内部没有引用外部变量,或者使用 let 定义的代码块变量,视为合法
"no-redeclare": [2, {"builtinGlobals": true}], // 避免重复声明一个变量
"curly": 2, // 强制所有控制语句使用一致的括号风格
"no-self-assign": 2, // 禁止给自身赋值
"no-self-compare": 2, // 禁止和自身比较
"no-sequences": 2, // 禁止可能导致结果不明确的逗号操作符
// 禁止使用不被修改的循环条件
// while (node) {
// doSomething(node);
// }
"no-unmodified-loop-condition": 2,
"no-useless-concat": 2, // 避免使用不必要的字符串拼接 var a = '1' + '0';
"no-useless-escape": 2, // 不必要的转义 "\'" '\"' 等
"no-with": 2, // 不要用 with
"no-eval": 2, // 禁止使用 eval 函数
"no-negated-condition": 1, // 尽量不使用否定表达式
"wrap-iife": [2, "any"], // 立即执行函数需要通过圆括号包围
"no-delete-var": 2, // 禁止使用 delete 删除 var 声明的变量
"no-useless-call": 2, // 避免使用没有意义的 call() 和 apply()
// 禁止在条件中使用常量表达式
// if (false) {
// doSomethingUnfinished();
// } // error
"no-constant-condition": 2,
"no-throw-literal": 1, // 通过 throw 语句抛出的对象必须是 Error 对象本身或者通过 Error 对象定义的对象 http://eslint.org/docs/rules/no-throw-literal
// if (!key in object) {
// }
// if (!obj instanceof Ctor) {
// }
"no-unsafe-negation": 2, // 条件判断中的取反操作
// typeof foo === "strnig"
// typeof foo == "undefimed"
// typeof bar != "nunber"
// typeof bar !== "fucntion"
"valid-typeof": 2,
"new-parens": 2, // 要求调用无参构造函数时有圆括号
"no-labels": 2 // 禁用标签语句
}
};