module.exports = { parser: '@typescript-eslint/parser', plugins: ['@typescript-eslint'], extends: ['plugin:@typescript-eslint/recommended'], rules:{ "indent": "off", "quotes": [1, "single"], "space-infix-ops": 2,//操作符前后有空格 // 必须使用 === 和 !== ,和 null 对比时除外 'eqeqeq': [2, 'always', { 'null': 'ignore' }], // 函数的形参不能多于5个 'max-params': [2, 5], // 禁止 switch 中出现相同的 case 'no-duplicate-case': 2, // 禁止使用 var,必须用 let 或 const 'no-var': 0, // 禁止出现空代码块 'no-empty': [2, { 'allowEmptyCatch': true }], // 禁止空的 function // 包含注释的情况下允许 'no-empty-function': 0, // if 后必须包含 { ,单行 if 除外 'curly': [2, 'multi-line', 'consistent'], // for 循环不得因方向错误造成死循环 'for-direction': 2, // 关键字前后必须有空格 'keyword-spacing': 2, // 最大块嵌套深度为 5 层 'max-depth': [2, 5], // 最大回调深度为 3 层 'max-nested-callbacks': [2, 3], // 禁止普通字符串中出现模板字符串语法 'no-template-curly-in-string': 0, // 禁止连等赋值 'no-multi-assign': 2, // 禁止使用连续的空格 'no-multi-spaces': 2, // 禁止使用 \ 来定义多行字符串,统一使用模板字符串来做 'no-multi-str': 2, // 禁止使用 new Object 'no-new-object': 2, // 禁止使用 new require 'no-new-require': 2, // 禁止使用 new Symbol 'no-new-symbol': 2, // 禁止 new Boolean、Number 或 String 'no-new-wrappers': 2, // 禁止 new 一个类而不存储该实例 'no-new': 2, // 禁止把原生对象 Math、JSON、Reflect 当函数使用 'no-obj-calls': 2, // 禁止使用八进制转义符 'no-octal-escape': 2, // 禁止使用0开头的数字表示八进制 'no-octal': 2, // 禁止使用 __dirname + 'file' 的形式拼接路径,应该使用 path.join 或 path.resolve 来代替 'no-path-concat': 2, // 禁止对函数的参数重新赋值 'no-param-reassign': 2, // 禁止使用保留字作为变量名 'no-shadow-restricted-names': 2, // 禁止数组中出现连续逗号 'no-sparse-arrays': 2, // 禁止在finally块中出现 return、throw、break、continue 'no-unsafe-finally': 2, // 禁止出现不安全的否定,如 for (!key in obj} {},应该写为 for (!(key in obj)} {} 'no-unsafe-negation': 2, // ...后面不允许有空格 'rest-spread-spacing': [2, 'never'], // 注释的斜线和星号后要加空格 'spaced-comment': [2, 'always', { 'block': { exceptions: ['*'], balanced: true } }], // typeof 判断条件只能是 "undefined", "object", "boolean", "number", "string", "function" 或 "symbol" 'valid-typeof': 2, "@typescript-eslint/indent": ["error", 2], "@typescript-eslint/explicit-function-return-type": ["warn", { allowExpressions: true }], "@typescript-eslint/no-explicit-any": ["off"], // 声明 "prefer-const": "error", //如果一个变量不会被重新赋值,最好使用const进行声明 "no-const-assign": "error", //不允许改变用const声明的变量 "no-var": "error", //用let/const代替var // 对象 "no-dupe-keys": "error", // 禁止在对象字面量中出现重复的键 "no-prototype-builtins": "error", // 禁止直接使用 Object.prototypes 的内置属性 "no-extend-native": "error", // 禁止扩展原生对象 "no-new-object": "error", // 禁止使用 Object 构造函数 "object-shorthand": [ "error", "always" ], //要求对象字面量简写语法 "quote-props": [ "error", "as-needed" ], // 对象属性只在需要的时候加引号 // 数组 "no-sparse-arrays": "error", // 禁用稀疏数组 "no-array-constructor": "error", //禁止使用 Array 构造函数 "array-callback-return": "error", // 数组回调函数内必须返回一个状态 // 字符串 "quotes": [ "error", "single", { "allowTemplateLiterals": true } ], // 字符串开头和结束使用单引号 "prefer-template": "error", // 使用模板而非字符串连接 "template-curly-spacing": [ "error", "never" ], // 强制模板字符串中花括号内不能出现空格 "no-path-concat": "error", // 当使用 _dirname 和 _filename 时不允许字符串拼接 "no-useless-concat": "error", // 禁止没有必要的字符拼接 "no-useless-escape": "error", // 禁用不必要的转义 // 函数 "no-dupe-args": "error", // 禁止在 function 定义中出现重复的参数 "no-new-func": "error", // 禁用Function构造函数 "no-return-assign": "error", // 禁止在返回语句中赋值 "func-style": [ "error", "declaration", { "allowArrowFunctions": true } ], // 统一函数风格为函数表达式或函数声明,并且允许使用箭头函数 "newline-before-return": "error", // 要求 return 语句之前有一空行 "wrap-iife": [ "error", "outside" ], // 立即执行函数外部必须包裹括号 "no-loop-func": "error", // 禁止在非function内声明function // "space-before-function-paren": "error", // 函数括号前必须要有空格 "no-param-reassign": "error", // 禁止修改函数参数 "prefer-spread": "error", // 使用解构形式代替.apply() // 箭头函数 "prefer-arrow-callback": "error", // 回调使用箭头函数 "arrow-spacing": "error", // 箭头前后要有空格 "arrow-parens": [ "error", "as-needed" ], // 参数使用括号包裹 "arrow-body-style": [ "error", "as-needed", { "requireReturnForObjectLiteral": true } ], // 函数体在必要的时候使用大括号 // 类 & 构造器 "no-useless-constructor": "error", // 禁止没必要的构造器 "no-dupe-class-members": "error", // 禁止重复创建类成员 // 模块 "no-duplicate-imports": "error", // 禁止从一个模块多次import // 迭代器 & 生成器 "no-iterator": "error", // 禁止使用Iterator属性 "no-restricted-syntax": "error", // 使用对应的数组/对象方法去迭代操作成员 "generator-star-spacing": "error", // *前后不要都有空格 // 属性 "dot-notation": "error", //强制在任何允许的时候使用点号访问属性 // 变量 // "one-var": ["error", "never"], // 变量统一声明 // 比较运算符 & 相等运算符 "eqeqeq": "error", // 使用 === 和 !== 代替 == 和 != "no-nested-ternary": "error", // 禁止混合的三目运算符 "no-unneeded-ternary": "error", //禁止可以在有更简单的可替代的表达式时使用三元操作符 // 条件 "no-cond-assign": "error", // 禁止在条件语句中出现赋值操作符 "no-constant-condition": "error", //禁止在条件中使用常量表达式 "no-duplicate-case": "error", // 禁止在 switch 语句中的 case 子句中出现重复的测试表达式 "default-case": "error", // 要求 Switch 语句中有 Default 分支 "no-else-return": "error", // 如果 if 块中包含了一个 return 语句,else 块就成了多余的了。可以将其内容移至块外 "no-fallthrough": "error", // 禁止 case 语句落空 // 代码块 "brace-style": "error", // 代码块左括号紧跟上一行结束 "curly": [ "error", "multi-line" ], // if、else if、else、for、while强制使用大括号,但允许在单行中省略大括号 "no-empty": [ "error", { "allowEmptyCatch": true } ], // 禁止空块语句,但允许出现空的 catch 子句 // 注释 "spaced-comment": "error", // 注释前有空格 "no-mixed-spaces-and-tabs": "error", // 禁止使用 空格 和 tab 混合缩进 "space-before-blocks": [ "error", "always" ], // 语句块之前的需要有空格 "keyword-spacing": "error", // 关键字后面必须要有空格 "space-infix-ops": [ "error", { "int32Hint": false } ], // 要求中缀操作符周围有空格,设置 int32Hint 选项为 true (默认 false) 允许 a|0 不带空格 "eol-last": "error", // 要求文件末尾保留一行空行 "newline-per-chained-call": "error", // 要求方法链中每个调用都有一个换行符 "padded-blocks": [ "error", "never" ], // 代码块开始和结束位置不可以有多余的空行 "space-in-parens": [ "error", "never" ], // 禁止圆括号内的空格 "array-bracket-spacing": [ "error", "never" ], // 数组紧贴括号部分不允许包含空格 "object-curly-spacing": [ "error", "never" ], // 对象紧贴花括号部分不允许包含空格 "no-regex-spaces": "error", // 禁止正则表达式字面量中出现多个空格 "no-multi-spaces": "error", // 禁止出现多个空格而且不是用来作缩进的 "block-spacing": [ "error", "never" ], // 单行代码块中紧贴括号部分不允许包含空格 "computed-property-spacing": [ "error", "never" ], // 禁止括号和其内部值之间的空格 "no-trailing-spaces": [ "error", { "skipBlankLines": true } ], // 禁用行尾空格 "no-spaced-func": "error", // 禁止函数调用时,与圆括号之间有空格 "space-unary-ops": "error", // 要求或禁止在一元操作符之前或之后存在空格,new、delete、typeof、void、yield要求有空格,-、+、--、++、!、!!要求无空格 "yield-star-spacing": [ "error", { "before": true, "after": false } ], // 强制 yield* 表达式中 * 号前有空格,后无空格 // 逗号 "comma-style": "error", // 逗号必须放在行末 "comma-dangle": [ "error", "always-multiline" ], // 多行对象字面量中要求拖尾逗号 "comma-spacing": [ "error", { "before": false, "after": true } ], //在变量声明、数组字面量、对象字面量、函数参数 和 序列中禁止在逗号前使用空格,要求在逗号后使用一个或多个空格 // 分号 "semi": "error", //不得省略语句结束的分号 "semi-spacing": [ "error", { "before": false, "after": true } ], //禁止分号周围的空格 "no-extra-semi": "error", // 禁用不必要的分号 // 类型转换 "radix": "error", // 在parseInt()中始终使用基数以消除意想不到的后果 "no-extra-boolean-cast": "error", // 禁止不必要的布尔类型转换 // 其他最佳实践或规范 "strict": "error", // 使用强制模式开关use strict; // "@typescript-eslint/no-extra-parens": ["error"], "no-eval": "error", // 禁用 eval() "no-with": "error", // 禁用 with 语句 "no-unexpected-multiline": "error", // 禁止使用令人困惑的多行表达式 "no-unreachable": "error", // 禁止在 return、throw、continue 和 break 语句后出现不可达代码 "no-unsafe-finally": "error", // 禁止在 finally 语句块中出现控制流语句 "valid-typeof": "error", // 强制 typeof 表达式与有效的字符串进行比较 "no-new-wrappers": "error", // 禁止通过 new 操作符使用 String、Number 和 Boolean "handle-callback-err": "error" // 强制回调错误处理 } }