Last active
October 17, 2017 07:14
-
-
Save mcattx/2b14a1cef0bd03b909ce to your computer and use it in GitHub Desktop.
My personal eslint config file
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| // 环境定义 | |
| "env": { | |
| "browser": true, | |
| "node": true, | |
| "commonjs": true, | |
| "amd": true, | |
| "es6": false, // 支持除模块外所有 ECMAScript 6 特性(该选项会自动设置 ecmaVersion 解析器选项为 6) | |
| "mocha": true, | |
| "phantomjs": true, | |
| "jquery": true | |
| }, | |
| // JavaScript 语言选项 | |
| "parserOptions": { | |
| // ECMAScript 版本 | |
| "ecmaVersion": 6, // 默认为 5,可选 3 5 6 7 8 | |
| "sourceType": "script", // 可选值为 module | |
| // 想使用的额外的语言特性 | |
| "ecmaFeatures": { | |
| // 允许在全局作用域下使用 return 语句 | |
| "globalReturn": true, | |
| // 启用全局 strict mode | |
| "impliedStrict": true, | |
| // 启用 JSX | |
| "jsx": true | |
| } | |
| }, | |
| // 全局变量 | |
| "globals": { | |
| }, | |
| // 插件,但必须先通过 npm install 才能用 | |
| "plugins": [ | |
| ], | |
| /** | |
| * 规则 | |
| * "off" 或 0 - 关闭规则 | |
| * "warn" 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出), | |
| * "error" 或 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出) | |
| */ | |
| "rules": { | |
| //////////////// | |
| // 可能出现的低级错误 // | |
| //////////////// | |
| // 禁止在 loop 中使用 await | |
| "no-await-in-loop": 2, | |
| // 禁止在条件语句中出现赋值操作符 | |
| "no-cond-assign": 2, | |
| // 禁用 console ,开发调试的时候允许使用,上线的时候必须去掉 | |
| "no-console": 1, | |
| // 禁止在条件中使用常量表达式 | |
| "no-constant-condition": 2, | |
| // 禁止在正则表达式中使用控制字符 | |
| "no-control-regex": 2, | |
| // 禁用 debugger,开发调试的时候允许使用,上线的时候必须去掉 | |
| "no-debugger": 1, | |
| // 禁止 function 定义中出现重名参数 | |
| "no-dupe-args": 2, | |
| // 禁止对象字面量中出现重复的 key | |
| "no-dupe-keys": 2, | |
| // 禁止出现重复的 case 标签 | |
| "no-duplicate-case": 2, | |
| // 禁止出现空语句块 | |
| "no-empty": 2, | |
| // 禁止在正则表达式中使用空字符集 | |
| "no-empty-character-class": 2, | |
| // 禁止对 catch 子句的参数重新赋值 | |
| "no-ex-assign": 2, | |
| // 禁止不必要的布尔转换 | |
| "no-extra-boolean-cast": 2, | |
| // 禁止不必要的括号 | |
| "no-extra-parens": 2, | |
| // 禁止不必要的分号 | |
| "no-extra-semi": 2, | |
| // 禁止对 function 声明重新赋值 | |
| "no-func-assign": 2, | |
| // 禁止在嵌套的块中出现变量声明或 function 声明 | |
| "no-inner-declarations": 2, | |
| // 禁止 RegExp 构造函数中存在无效的正则表达式字符串 | |
| "no-invalid-regexp": 2, | |
| // 禁止在字符串和注释之外不规则的空白 | |
| "no-irregular-whitespace": 2, | |
| // 禁止把全局对象作为函数调用 | |
| "no-obj-calls": 2, | |
| // 禁止直接调用 Object.prototypes 的内置属性 | |
| "no-prototype-builtins": 2, | |
| // 禁止正则表达式字面量中出现多个空格 | |
| "no-regex-spaces": 2, | |
| // 禁用稀疏数组 | |
| "no-sparse-arrays": 2, | |
| // 禁止在字符串里使用 es6 模板语法 | |
| "no-template-curly-in-string": 2, | |
| // 禁止出现令人困惑的多行表达式 | |
| "no-unexpected-multiline": 2, | |
| // 禁止在return、throw、continue 和 break 语句之后出现不可达代码 | |
| "no-unreachable": 2, | |
| // 禁止在 finally 语句块中出现控制流语句 | |
| "no-unsafe-finally": 2, | |
| // 要求使用 isNaN() 检查 NaN | |
| "use-isnan": 2, | |
| // 强制使用有效的 JSDoc 注释 | |
| "valid-jsdoc": 1, | |
| // 强制 typeof 表达式与有效的字符串进行比较 | |
| "valid-typeof": 2, | |
| ////////////// | |
| // 以下是最佳实践 // | |
| ////////////// | |
| // 强制 getter 和 setter 在对象中成对出现 | |
| "accessor-pairs": 1, | |
| // 强制数组方法的回调函数中有 return 语句 | |
| "array-callback-return": 2, | |
| // 强制把变量的使用限制在其定义的作用域范围内 | |
| "block-scoped-var": 1, | |
| // 指定程序中允许的最大环路复杂度,就是能有多少个 if else | |
| "complexity": ["error", 20], | |
| // 要求 return 语句要么总是指定返回的值,要么不指定 | |
| "consistent-return": 0, | |
| // 强制所有控制语句使用一致的括号风格 | |
| "curly": ["error", "all"], | |
| // 要求 switch 语句中有 default 分支 | |
| "default-case": 2, | |
| // 强制在点号之前换行 | |
| "dot-location": ["error", "property"], | |
| // 强制尽可能地使用点号 | |
| "dot-notation": ["warn", { | |
| "allowKeywords": false | |
| } | |
| ], | |
| // 尽量使用全等 | |
| "eqeqeq": 1, | |
| // 要求 for-in 循环中有一个 if 语句 | |
| "guard-for-in": 2, | |
| // 禁用 alert、confirm 和 prompt | |
| "no-alert": 2, | |
| // 禁用 arguments.caller 或 arguments.callee | |
| "no-caller": 2, | |
| // 不允许在 case 子句中使用词法声明 | |
| "no-case-declarations": 2, | |
| // 禁止使用看起来像除法的正则表达式 | |
| "no-div-regex": 2, | |
| // 禁止 if 语句中有 return 之后有 else | |
| "no-else-return": 2, | |
| // 禁止出现空函数。在 function 里加一句注释可破 | |
| "no-empty-function": 2, | |
| // 禁止使用空解构模式 | |
| "no-empty-pattern": 2, | |
| // 禁止在没有类型检查操作符的情况下与 null 进行比较 | |
| "no-eq-null": 1, | |
| // 禁用 eval() | |
| "no-eval": 2, | |
| // 禁止扩展原生类型 | |
| "no-extend-native": 2, | |
| // 禁用不必要的标签 | |
| "no-extra-label": 2, | |
| // 禁止数字字面量中使用前导和末尾小数点 | |
| "no-floating-decimal": 2, | |
| // 禁止赋值给原生对象 | |
| "no-global-assign": 2, | |
| // 禁止使用较短的符号实现类型转换 | |
| "no-implicit-coercion": 2, | |
| // 禁止在全局范围内使用 var 和命名的 function 声明 | |
| "no-implicit-globals": 0, | |
| // 禁止使用类似 eval() 的方法 | |
| "no-implied-eval": 2, | |
| // 禁止 this 关键字出现在类和类对象之外 | |
| "no-invalid-this": 2, | |
| // 禁用 __iterator__ 属性 | |
| "no-iterator": 2, | |
| // 禁用标签语句 | |
| "no-labels": 2, | |
| // 禁用不必要的嵌套块 | |
| "no-lone-blocks": 2, | |
| // 禁止在循环中出现 function 声明和表达式 | |
| "no-loop-func": 2, | |
| // 禁用魔术数字 | |
| "no-magic-numbers": 1, | |
| // 禁止使用多个空格 | |
| "no-multi-spaces": 2, | |
| // 禁止使用多行字符串 | |
| "no-multi-str": 2, | |
| // 禁止在非赋值或条件语句中使用 new 操作符 | |
| "no-new": 2, | |
| // 禁止对 Function 对象使用 new 操作符 | |
| "no-new-func": 2, | |
| // 禁止对 String,Number 和 Boolean 使用 new 操作符 | |
| "no-new-wrappers": 2, | |
| // 禁用八进制字面量 | |
| "no-octal": 2, | |
| // 禁止在字符串中使用八进制转义序列 | |
| "no-octal-escape": 2, | |
| // 不允许对 function 的参数进行重新赋值 | |
| "no-param-reassign": 2, | |
| // 禁用 __proto__ 属性 | |
| "no-proto": 2, | |
| // 禁止使用 var 多次声明同一变量 | |
| "no-redeclare": 2, | |
| // 禁止在返回语句中赋值 | |
| "no-return-assign": 0, | |
| // 禁止在 return 语句使用 await | |
| "no-return-await": 0, | |
| // 禁止使用 javascript: url | |
| "no-script-url": 2, | |
| // 禁止自我赋值 | |
| "no-self-assign": 2, | |
| // 禁止自身比较 | |
| "no-self-compare": 2, | |
| // 禁用逗号操作符 | |
| "no-sequences": 2, | |
| // 禁止抛出非异常字面量 | |
| "no-throw-literal": 2, | |
| // 禁用一成不变的循环条件 | |
| "no-unmodified-loop-condition": 2, | |
| // 禁止出现未使用过的表达式 | |
| "no-unused-expressions": 2, | |
| // 禁用未使用过的标签 | |
| "no-unused-labels": 2, | |
| // 禁止不必要的 .call() 和 .apply() | |
| "no-useless-call": 2, | |
| // 禁止不必要的字符串字面量或模板字面量的连接 | |
| "no-useless-concat": 2, | |
| // 禁用不必要的转义字符 | |
| "no-useless-escape": 2, | |
| // 禁用 void 操作符 | |
| "no-void": 0, | |
| // 禁止在注释中使用特定的警告术语 | |
| "no-warning-comments": 0, | |
| // 禁用 with 语句 | |
| "no-with": 2, | |
| // Promise reject 语句必须用 new Error | |
| "prefer-promise-reject-errors": 2, | |
| // 要求所有的 var 声明出现在它们所在的作用域顶部 | |
| "vars-on-top": 2, | |
| // 强制在parseInt()使用基数参数 | |
| "radix": 2, | |
| // 要求 IIFE 使用括号括起来 | |
| "wrap-iife": 2, | |
| // 要求或禁止 “Yoda” 条件 | |
| "yoda": 2, | |
| // 要求或禁止使用严格模式指令 | |
| "strict": 0, | |
| ////////////// | |
| // 变量声明 // | |
| ////////////// | |
| // 要求或禁止 var 声明中的初始化(初值) | |
| "init-declarations": 0, | |
| // 不允许 catch 子句的参数与外层作用域中的变量同名 | |
| "no-catch-shadow": 2, | |
| // 禁止删除变量 | |
| "no-delete-var": 2, | |
| // 不允许标签与变量同名 | |
| "no-label-var": 2, | |
| // 禁用特定的全局变量 | |
| "no-restricted-globals": 2, | |
| // 禁止 var 声明 与外层作用域的变量同名 | |
| "no-shadow": 2, | |
| // 禁止覆盖受限制的标识符 | |
| "no-shadow-restricted-names": 2, | |
| // 禁用未声明的变量,除非它们在 /*global */ 注释中被提到 | |
| "no-undef": 2, | |
| // 禁止将变量初始化为 undefined | |
| "no-undef-init": 2, | |
| // 禁止将 undefined 作为标识符 | |
| "no-undefined": 2, | |
| // 禁止出现未使用过的变量 | |
| "no-unused-vars": [ | |
| 2, | |
| { | |
| "vars": "all", | |
| "args": "none" | |
| } | |
| ], | |
| // 不允许在变量定义之前使用它们 | |
| "no-use-before-define": 2, | |
| ////////////////////////// | |
| // Node.js and CommonJS // | |
| ////////////////////////// | |
| // 强制返回callback函数 | |
| "callback-return": 2, | |
| // 要求 require() 出现在顶层模块作用域中 | |
| "global-require": 1, | |
| // 要求回调函数中有容错处理 | |
| "handle-callback-err": [ | |
| "error", | |
| "^(err|error)$" | |
| ], | |
| "no-buffer-constructor": 0, | |
| // 禁止混合常规 var 声明和 require 调用 | |
| "no-mixed-requires": 2, | |
| // 禁止调用 require 时使用 new 操作符 | |
| "no-new-require": 2, | |
| // 禁止对 __dirname 和 __filename进行字符串连接 | |
| "no-path-concat": 0, | |
| // 禁用 process.env | |
| "no-process-env": 0, | |
| // 禁用 process.exit() | |
| "no-process-exit": 0, | |
| // 禁用同步方法 | |
| "no-sync": 0, | |
| ////////////// | |
| // 风格指南 // | |
| ////////////// | |
| "array-bracket-newline": ["warn", { | |
| "multiline": true | |
| }], | |
| // 指定数组的元素之间要以空格隔开(, 后面), never参数:[ 之前和 ] 之后不能带空格,always参数:[ 之前和 ] 之后必须带空格 | |
| "array-bracket-spacing": ["warn", "always"], | |
| "array-element-newline": ["warn", "always"], | |
| // 禁止或强制在单行代码块中使用空格(禁用) | |
| "block-spacing":["warn", "always"], | |
| // if while function 后面的{必须与if在同一行,java风格。 | |
| "brace-style": ["warn", "1tbs"], | |
| // 双峰驼命名格式 | |
| "camelcase": [ | |
| "warn", | |
| { | |
| "properties": "always" | |
| } | |
| ], | |
| "capitalized-comments": 0, | |
| // 强制在逗号周围使用空格 | |
| "comma-spacing": [ | |
| "warn", | |
| { | |
| "before": false, | |
| "after": true | |
| } | |
| ], | |
| // 要求或禁止末尾逗号 | |
| "comma-dangle": [ | |
| 0, | |
| "always-multiline" | |
| ], | |
| // 逗号风格 | |
| "comma-style": [ | |
| "warn", | |
| "last" | |
| ], | |
| // 禁止或强制在计算属性中使用空格 | |
| "computed-property-spacing": [ | |
| "warn", | |
| "never" | |
| ], | |
| // 要求一致的 This 别名 | |
| "consistent-this": [ | |
| "error", | |
| "self" | |
| ], | |
| // 强制在文件最后加一行空白行 | |
| "eol-last": [ | |
| "warn", | |
| "always" | |
| ], | |
| // 禁止在调用函数时前面加空格 | |
| "func-call-spacing": [ | |
| "warn", | |
| "never" | |
| ], | |
| // | |
| "func-name-matching": 0, | |
| // 要求或禁止使用命名的 function 表达式 | |
| "func-names": 2, | |
| // 强制一致地使用函数声明或函数表达式,方法定义风格,参数: | |
| // declaration: 强制使用方法声明的方式,function f(){} e.g [2, "declaration"] | |
| // expression:强制使用方法表达式的方式,var f = function() {} e.g [2, "expression"] | |
| // allowArrowFunctions: declaration风格中允许箭头函数。 e.g [2, "declaration", { "allowArrowFunctions": true }] | |
| "func-style": 0, | |
| // 禁止使用指定的标识符 | |
| "id-blacklist": 0, | |
| // 强制标识符的最新和最大长度 | |
| "id-length": 0, | |
| // 要求标识符匹配一个指定的正则表达式 | |
| "id-match": 0, | |
| // 强制使用一致的缩进。这个得先讨论 | |
| "indent": 0, | |
| // 强制在 JSX 属性中使用一致的单引号或双引号 | |
| "jsx-quotes": 2, | |
| // 强制在对象字面量的键和值之间使用一致的空格 | |
| "key-spacing": [ | |
| "warn", | |
| { | |
| "beforeColon": false, | |
| "afterColon": true, | |
| "mode": "strict" | |
| } | |
| ], | |
| // 强制关键字周围空格的一致性 | |
| "keyword-spacing": [ | |
| "warn", | |
| { | |
| "before": true, | |
| "after": true | |
| } | |
| ], | |
| // 注释位置 | |
| "line-comment-position": 0, | |
| // 强制使用一致的换行符风格 | |
| "linebreak-style": [ | |
| 0, | |
| "unix" | |
| ], | |
| // 强制一行的最大长度 | |
| "max-len": [ | |
| "warn", | |
| 80 | |
| ], | |
| // 要求构造函数首字母大写 | |
| "new-cap": [ | |
| "error", | |
| { | |
| "newIsCap": true, | |
| "capIsNew": true | |
| } | |
| ], | |
| // 要求调用无参构造函数时有圆括号 | |
| "new-parens": 2, | |
| // 要求方法链中每个调用都有一个换行符 | |
| "newline-per-chained-call": 0, | |
| // 禁止使用 Array 构造函数 | |
| "no-array-constructor": 2, | |
| // 禁用按位运算符 | |
| "no-bitwise": 1, | |
| // 禁用 continue 语句 | |
| "no-continue": 0, | |
| // 禁止 if 作为唯一的语句出现在 else 语句中 | |
| "no-lonely-if": 2, | |
| // 禁止混合使用不同的操作符 | |
| "no-mixed-operators": 2, | |
| // 不允许空格和 tab 混合缩进 | |
| "no-mixed-spaces-and-tabs": 2, | |
| // 不允许 var a = b = c = 5这样赋值 | |
| "no-multi-assign": 2, | |
| // 不允许多个空行 | |
| "no-multiple-empty-lines": 1, | |
| // 禁用否定表达式 | |
| "no-negated-condition": 0, | |
| // 禁止使用嵌套的三元表达式 | |
| "no-nested-ternary": 2, | |
| // 禁止使用 Object 构造函数 | |
| "no-new-object": 2, | |
| // 禁止使用一元操作符 ++ 和 -- | |
| "no-plusplus": 0, | |
| // 禁止使用三元操作符 | |
| "no-ternary": 0, | |
| // 禁用行尾空白 | |
| "no-trailing-spaces": 1, | |
| // 禁止标识符中有悬空下划线 | |
| "no-underscore-dangle": 0, | |
| // 禁止可以表达为更简单结构的三元操作符 | |
| "no-unneeded-ternary": 2, | |
| // 禁止属性前有空白 | |
| "no-whitespace-before-property": 2, | |
| // 强制在花括号内使用一致的换行符 | |
| "object-curly-newline": [ | |
| "warn", | |
| "always" | |
| ], | |
| // 强制在花括号中使用一致的空格 | |
| "object-curly-spacing": [ | |
| "warn", | |
| "always" | |
| ], | |
| // 强制将对象的属性放在不同的行上 | |
| "object-property-newline": 1, | |
| // 强制函数中的变量在一起声明或分开声明 | |
| "one-var": [ | |
| "off" | |
| ], | |
| // 要求或禁止在变量声明周围换行 | |
| "one-var-declaration-per-line": 2, | |
| // 禁止尽可能地简化赋值操作 | |
| "operator-assignment": [ | |
| "warn", | |
| "never" | |
| ], | |
| // 强制操作符使用一致的换行符风格 | |
| "operator-linebreak": [ | |
| "warn", | |
| "before" | |
| ], | |
| // 禁止块内填充 | |
| "padded-blocks": [ | |
| "warn", | |
| "never" | |
| ], | |
| // 要求对象字面量属性名称用引号括起来 | |
| "quote-props": 0, | |
| // 强制使用一致的反勾号、双引号或单引号 | |
| "quotes": [ | |
| "warn", | |
| "single" | |
| ], | |
| // 要求使用 JSDoc 注释 | |
| "require-jsdoc": 1, | |
| // 要求使用分号 | |
| "semi": [ | |
| "warn", | |
| "always" | |
| ], | |
| // 强制分号之前和之后使用一致的空格 | |
| "semi-spacing": [ | |
| "warn", | |
| { | |
| "before": false, | |
| "after": false | |
| } | |
| ], | |
| // 强制分号的位置 | |
| "semi-style": [ | |
| "warn", | |
| "last" | |
| ], | |
| // 按 key 排序 | |
| "sort-keys": 0, | |
| // 变量排序 | |
| "sort-vars": 0, | |
| // 要求或禁止语句块之前的空格 | |
| "space-before-blocks": [ | |
| "warn", | |
| "always" | |
| ], | |
| // 要求或禁止函数圆括号之前有一个空格 | |
| "space-before-function-paren": 1, | |
| // 强制圆括号内的空格 | |
| "space-in-parens": [ | |
| "off" | |
| ], | |
| // 要求中缀操作符周围有空格 | |
| "space-infix-ops": 2, | |
| // 要求或禁止在注释前有空白 | |
| "spaced-comment": 2, | |
| "template-tag-spacing": 0, | |
| // 禁止使用 Unicode 字节顺序标记 | |
| "unicode-bom": [ | |
| "error", | |
| "never" | |
| ], | |
| // 要求正则表达式被包裹起来 | |
| "wrap-regex": 2, | |
| ////////////// | |
| // ES6.相关 // | |
| ////////////// | |
| // 要求箭头函数体使用大括号 | |
| "arrow-body-style": 2, | |
| // 要求箭头函数的参数使用圆括号 | |
| "arrow-parens": 2, | |
| // 要求箭头函数的箭头之前或之后有空格 | |
| "arrow-spacing": [ | |
| "warn", { | |
| "before": true, | |
| "after": true | |
| } | |
| ], | |
| // 强制在子类构造函数中用super()调用父类构造函数,TypeScrip的编译器也会提示 | |
| "constructor-super": 2, | |
| // 强制 generator 函数中 * 号周围使用一致的空格 | |
| "generator-star-spacing": [ | |
| "warn", | |
| { | |
| "before": true, | |
| "after": true | |
| } | |
| ], | |
| // 禁止修改类声明的变量 | |
| "no-class-assign": 2, | |
| // 不允许箭头功能,在那里他们可以混淆的比较 | |
| "no-confusing-arrow": 0, | |
| // 禁止修改 const 声明的变量 | |
| "no-const-assign": 2, | |
| // 禁止类成员中出现重复的名称 | |
| "no-dupe-class-members": 2, | |
| // 不允许同个模块多次 Import | |
| "no-duplicate-imports": 2, | |
| // 禁止 Symbol 的构造函数 | |
| "no-new-symbol": 2, | |
| // 允许指定模块加载时的进口 | |
| "no-restricted-imports": 2, | |
| // 禁止在构造函数中,在调用 super() 之前使用 this 或 super | |
| "no-this-before-super": 2, | |
| // 禁用不必要的构造函数 | |
| "no-useless-constructor": 2, | |
| // 要求使用 let 或 const 而不是 var | |
| "no-var": 2, | |
| // 要求对象字面量中方法和属性使用简写语法 | |
| "object-shorthand": 2, | |
| // 推荐使用箭头函数作为回调 | |
| "prefer-arrow-callback": 2, | |
| // 要求使用 const 声明那些声明后不再被修改的变量 | |
| "prefer-const": 2, | |
| "prefer-destructuring": 0, | |
| // 建议使用扩展运算符而非.apply() | |
| "prefer-spread": 1, | |
| // 建议使用模板而非字符串连接 | |
| "prefer-template": 1, | |
| // 要求generator 函数内有 yield | |
| "require-yield": 0, | |
| // enforce spacing between rest and spread operators and their expressions | |
| "rest-spread-spacing": 2, | |
| // 强制模块内的 import 排序 | |
| "sort-imports": 0, | |
| // 调用 symbol 必须传染字符串 | |
| "symbol-description": 2, | |
| // 强制模板字符串中空格的使用 | |
| "template-curly-spacing": 0, | |
| // 强制在 yield* 表达式中 * 周围使用空格 | |
| "yield-star-spacing": [ | |
| "warn", | |
| "before" | |
| ] | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment