Skip to content

Instantly share code, notes, and snippets.

@mcattx
Last active October 17, 2017 07:14
Show Gist options
  • Select an option

  • Save mcattx/2b14a1cef0bd03b909ce to your computer and use it in GitHub Desktop.

Select an option

Save mcattx/2b14a1cef0bd03b909ce to your computer and use it in GitHub Desktop.
My personal eslint config file
{
// 环境定义
"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