-
Notifications
You must be signed in to change notification settings - Fork 53
/
.eslintrc.js
148 lines (130 loc) · 4.51 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
module.exports = {
root: true,
/**
* 解析器:使用 ESLint 解析 TypeScript 语法
*
* tells ESLint to use the parser package you installed (@typescript-eslint/parser)
*
* * This allows ESLint to understand TypeScript syntax.
* * This is required, or else ESLint will throw errors as it tries to parse TypeScript code as if it were regular JavaScript.
*/
parser: "@typescript-eslint/parser",
/**
* ESLint 插件
*
* tells ESLint to load the plugin package you installed
*/
plugins: [
/**
* 在 ESLint 中加载此插件,用于配置 TypeScript 校验规则
*/
"@typescript-eslint",
],
/**
* 扩展
*
* tells ESLint that your config extends the given configurations
*/
extends: [
// ESLint 共享规则配置,此为 ESlint 内置的推荐校验规则配置(也被称为最佳规则实践)
// ESLint's inbuilt "recommended" config - it turns on a small, sensible set of rules which lint for well-known best-practices.
// 当 ESLint 的原生规则`eslint:recommended` 和 `plugin:@typescript-eslint/recommended` 的规则太多了,而且原生的规则有一些在 TypeScript 中支持的不好,需要禁用掉。
// "eslint:recommended",
// "plugin:@typescript-eslint/recommended",
// 因此最后采用 AlloyTeam 的 ESLintConfig
// @see https://github.com/AlloyTeam/eslint-config-alloy
"alloy",
"alloy/typescript",
// 格式化扩展
// "prettier",
// "prettier/@typescript-eslint"
],
globals: {
/**
* 指定Cocos Creator相关全局变量,这样子就不会触发 no-undef 的规则
*/
cc: "readonly",
CC_JSB: "readonly",
CC_NATIVERENDERER: "readonly",
CC_EDITOR: "readonly",
CC_PREVIEW: "readonly",
CC_TEST: "readonly",
CC_DEBUG: "readonly",
Editor: "readonly",
},
/**
* 默认规则
*
* @see https://eslint.org/docs/rules/
* @see https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules
*/
rules: {
/**
* 禁止使用 var
*/
"no-var": ["error"],
eqeqeq: "off",
"no-eq-null": "off",
/**
* 控制极限环复杂度最大值为25(默认20),超过后警告(默认是报错)
*/
complexity: [
"warn",
{
max: 25,
},
],
/**
* 函数最多参数数量为 3 个(默认值),超过之后警告
*/
"max-params": ["warn"],
/**
* 强制使用 interface 而不是 type 去定义对象类型
*/
"@typescript-eslint/consistent-type-definitions": ["error", "interface"],
/**
* method 和 property 不需要显式声明 public 访问修饰符
*/
"@typescript-eslint/explicit-member-accessibility": [
"error",
{
accessibility: "no-public",
},
],
/**
* 强制使用 method 签名语法而不是 property 签名语法
*/
"@typescript-eslint/method-signature-style": ["error", "method"],
/**
* 强制使用 method 签名语法而不是 property 签名语法
*/
"@typescript-eslint/member-ordering": ["off"],
/**
* 关闭 optional-chain 语法改进提示,因为 cc 支持的 ts 版本不够高,不能用该语法糖
*/
"@typescript-eslint/prefer-optional-chain": ["off"],
/**
* 允许显式声明 number, string, boolean 的变量或参数值
*/
"@typescript-eslint/no-inferrable-types": ["off"],
"@typescript-eslint/consistent-type-assertions": ["off"],
},
// /**
// * 指定部分文件覆盖规则
// */
// overrides: [
// {
// // enable the rule specifically for TypeScript files
// files: ["*.ts", "*.tsx"],
// rules: {
// "@typescript-eslint/explicit-member-accessibility": ["no-public"],
// // 强制使用 method 签名语法而不是 property 签名语法
// "@typescript-eslint/method-signature-style": ["method"],
// /**
// * 函数最多参数数量 4 个
// */
// "max-params": 4,
// },
// },
// ],
};