From 98fef4dcfbb90f052e7eb150dce00a6cad6ee1f1 Mon Sep 17 00:00:00 2001 From: iapyang Date: Thu, 24 Oct 2019 17:24:20 +0800 Subject: [PATCH] chore: update eslint --- .eslintrc | 276 ++++++++++++++++++++++++++++++-------------------- src/.eslintrc | 177 ++++++++++++++++++++++++++++++++ 2 files changed, 345 insertions(+), 108 deletions(-) create mode 100644 src/.eslintrc diff --git a/.eslintrc b/.eslintrc index 5f7de06100..9e4122eb28 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,10 +1,18 @@ { - "extends": "eslint:recommended", "env": { "browser": true, "node": true, "es6": true }, + "globals": { + "window": true, + "$": true, + "WebUI": true, + "BI": true, + "Data": true, + "Fix": true, + "module": true + }, "parser": "@typescript-eslint/parser", "parserOptions": { "project": "./tsconfig.json", @@ -14,8 +22,25 @@ "modules": true } }, - "plugins": ["@typescript-eslint"], + "plugins": ["@typescript-eslint/eslint-plugin"], "rules": { + "no-underscore-dangle": 0, + "prefer-rest-params": 0, + "no-plusplus": 0, + "max-len": 0, + "no-use-before-define": [ + "error", + { + "functions": false + } + ], + "new-cap": [ + "error", + { + "properties": false + } + ], + "no-confusing-arrow": ["off"], "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": [ "error", @@ -25,19 +50,28 @@ "ignoreRestSiblings": true } ], - // 声明 - "no-use-before-define": "error", - //禁止定义前使用 - - // 对象 - "no-dupe-keys": "error", - // 禁止在对象字面量中出现重复的键 - "quote-props": [ + "no-irregular-whitespace": [ "error", - "as-needed" + { + "skipTemplates": false, + "skipStrings": false + } ], - // 对象属性只在需要的时候加引号 - + // 声明 + "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", @@ -45,54 +79,83 @@ { "allowTemplateLiterals": true } - ], - // 字符串开头和结束使用双引号 - "no-useless-concat": "error", - // 禁止没有必要的字符拼接 - "no-useless-escape": "error", - // 禁用不必要的转义 - + ], // 字符串开头和结束使用单引号 + "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 定义中出现重复的参数 - "space-before-function-paren": ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}], - // 函数括号前必须要有空格 - + "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", //强制在任何允许的时候使用点号访问属性 // 变量 - "no-undef": "error", - // 禁止使用未声明的变量 - + "no-undef": "error", // 禁止使用未声明的变量 + // "one-var": ["error", "never"], // 变量统一声明 // 比较运算符 & 相等运算符 - "eqeqeq": "error", - // 使用 === 和 !== 代替 == 和 != - "no-unneeded-ternary": "error", - //禁止可以在有更简单的可替代的表达式时使用三元操作符 - + "eqeqeq": "error", // 使用 === 和 !== 代替 == 和 != + "no-case-declarations": "error", // 禁止在 case 或 default 子句中出现变量声明 + // "no-nested-ternary": "error", // 禁止混合的三目运算符 + "no-unneeded-ternary": "error", //禁止可以在有更简单的可替代的表达式时使用三元操作符 // 条件 - "default-case": "error", - // 要求 Switch 语句中有 Default 分支 - "no-else-return": "error", - // 如果 if 块中包含了一个 return 语句,else 块就成了多余的了。可以将其内容移至块外 - + "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": [ + "brace-style": "error", // 代码块左括号紧跟上一行结束 + "curly": ["error", "multi-line"], // if、else if、else、for、while强制使用大括号,但允许在单行中省略大括号 + "no-empty": [ "error", - "1tbs", { - "allowSingleLine": true + "allowEmptyCatch": true } - ], - // 代码块左括号紧跟上一行结束 - "curly": [ - "error", - "multi-line" - ], - // if、else if、else、for、while强制使用大括号,但允许在单行中省略大括号 - + ], // 禁止空块语句,但允许出现空的 catch 子句 // 注释 - "spaced-comment": "error", - // 注释前有空格 - + "spaced-comment": "error", // 注释前有空格 + "lines-around-comment": [ + "error", + { + "beforeBlockComment": false + } + ], // 块级注释前要有空行 // 空白 "indent": [ "error", @@ -100,78 +163,75 @@ { "SwitchCase": 1 } - ], - // 缩进控制4空格 - "no-mixed-spaces-and-tabs": "error", - // 禁止使用 空格 和 tab 混合缩进 - "space-before-blocks": [ + ], // 缩进控制4空格 + "no-mixed-spaces-and-tabs": "error", // 禁止使用 空格 和 tab 混合缩进 + "space-before-blocks": ["error", "always"], // 语句块之前的需要有空格 + "keyword-spacing": "error", // 关键字后面必须要有空格 + "space-infix-ops": [ "error", - "always" - ], - // 语句块之前的需要有空格 - "space-infix-ops": ["error", { - "int32Hint": false - }], // 要求中缀操作符周围有空格,设置 int32Hint 选项为 true (默认 false) 允许 a|0 不带空格 - "no-trailing-spaces": ["error", { - "skipBlankLines": true - }], // 禁用行尾空格 - "key-spacing": ["error", { - "afterColon": true - }], // 要求在对象字面量的冒号和值之间存在至少有一个空格 - - + { + "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", "always"], // 对象紧贴花括号部分不允许包含空格 + "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-style": "error", // 逗号必须放在行末 + "comma-dangle": ["error", "always-multiline"], // 多行对象字面量中要求拖尾逗号 "comma-spacing": [ "error", { "before": false, "after": true } - ], - //在变量声明、数组字面量、对象字面量、函数参数 和 序列中禁止在逗号前使用空格,要求在逗号后使用一个或多个空格 - - + ], //在变量声明、数组字面量、对象字面量、函数参数 和 序列中禁止在逗号前使用空格,要求在逗号后使用一个或多个空格 // 分号 - "semi": "error", - //不得省略语句结束的分号 + "semi": "error", //不得省略语句结束的分号 "semi-spacing": [ "error", { "before": false, "after": true } - ], - //禁止分号周围的空格 - "no-extra-semi": "error", - // 禁用不必要的分号 - - + ], //禁止分号周围的空格 + "no-extra-semi": "error", // 禁用不必要的分号 // 类型转换 - "no-extra-boolean-cast": "error", - // 禁止不必要的布尔类型转换 - - + "radix": "error", // 在parseInt()中始终使用基数以消除意想不到的后果 + "no-extra-boolean-cast": "error", // 禁止不必要的布尔类型转换 // 其他最佳实践或规范 - "no-unexpected-multiline": "error", - // 禁止使用令人困惑的多行表达式 - "no-unreachable": "error", - // 禁止在 return、throw、continue 和 break 语句后出现不可达代码 - "valid-typeof": "error", - // 强制 typeof 表达式与有效的字符串进行比较 - "no-new-wrappers": "error" - // 禁止通过 new 操作符使用 String、Number 和 Boolean - }, - "globals": { - "window": true, - "$": true, - "WebUI": true, - "BI": true, - "Data": true, - "Fix": true, - "module": true + "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" // 强制回调错误处理 } } diff --git a/src/.eslintrc b/src/.eslintrc new file mode 100644 index 0000000000..5f7de06100 --- /dev/null +++ b/src/.eslintrc @@ -0,0 +1,177 @@ +{ + "extends": "eslint:recommended", + "env": { + "browser": true, + "node": true, + "es6": true + }, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.json", + "ecmaVersion": 6, + "sourceType": "module", + "ecmaFeatures": { + "modules": true + } + }, + "plugins": ["@typescript-eslint"], + "rules": { + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { + "vars": "all", + "args": "none", + "ignoreRestSiblings": true + } + ], + // 声明 + "no-use-before-define": "error", + //禁止定义前使用 + + // 对象 + "no-dupe-keys": "error", + // 禁止在对象字面量中出现重复的键 + "quote-props": [ + "error", + "as-needed" + ], + // 对象属性只在需要的时候加引号 + + // 字符串 + "quotes": [ + "error", + "double", + { + "allowTemplateLiterals": true + } + ], + // 字符串开头和结束使用双引号 + "no-useless-concat": "error", + // 禁止没有必要的字符拼接 + "no-useless-escape": "error", + // 禁用不必要的转义 + + // 函数 + "no-dupe-args": "error", + // 禁止在 function 定义中出现重复的参数 + "space-before-function-paren": ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}], + // 函数括号前必须要有空格 + + // 变量 + "no-undef": "error", + // 禁止使用未声明的变量 + + // 比较运算符 & 相等运算符 + "eqeqeq": "error", + // 使用 === 和 !== 代替 == 和 != + "no-unneeded-ternary": "error", + //禁止可以在有更简单的可替代的表达式时使用三元操作符 + + // 条件 + "default-case": "error", + // 要求 Switch 语句中有 Default 分支 + "no-else-return": "error", + // 如果 if 块中包含了一个 return 语句,else 块就成了多余的了。可以将其内容移至块外 + + // 代码块 + "brace-style": [ + "error", + "1tbs", + { + "allowSingleLine": true + } + ], + // 代码块左括号紧跟上一行结束 + "curly": [ + "error", + "multi-line" + ], + // if、else if、else、for、while强制使用大括号,但允许在单行中省略大括号 + + // 注释 + "spaced-comment": "error", + // 注释前有空格 + + // 空白 + "indent": [ + "error", + 4, + { + "SwitchCase": 1 + } + ], + // 缩进控制4空格 + "no-mixed-spaces-and-tabs": "error", + // 禁止使用 空格 和 tab 混合缩进 + "space-before-blocks": [ + "error", + "always" + ], + // 语句块之前的需要有空格 + "space-infix-ops": ["error", { + "int32Hint": false + }], // 要求中缀操作符周围有空格,设置 int32Hint 选项为 true (默认 false) 允许 a|0 不带空格 + "no-trailing-spaces": ["error", { + "skipBlankLines": true + }], // 禁用行尾空格 + "key-spacing": ["error", { + "afterColon": true + }], // 要求在对象字面量的冒号和值之间存在至少有一个空格 + + + // 逗号 + "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", + // 禁用不必要的分号 + + + // 类型转换 + "no-extra-boolean-cast": "error", + // 禁止不必要的布尔类型转换 + + + // 其他最佳实践或规范 + "no-unexpected-multiline": "error", + // 禁止使用令人困惑的多行表达式 + "no-unreachable": "error", + // 禁止在 return、throw、continue 和 break 语句后出现不可达代码 + "valid-typeof": "error", + // 强制 typeof 表达式与有效的字符串进行比较 + "no-new-wrappers": "error" + // 禁止通过 new 操作符使用 String、Number 和 Boolean + }, + "globals": { + "window": true, + "$": true, + "WebUI": true, + "BI": true, + "Data": true, + "Fix": true, + "module": true + } +}