@epoint-fe/fe-tool
Version:
epoint frontend build tools
194 lines (187 loc) • 8.78 kB
JavaScript
module.exports = {
env: {
browser: false,
commonjs: false,
es6: true,
node: true
},
// 使用默认的配置
extends: 'eslint:recommended',
parserOptions: {
ecmaFeatures: {
jsx: false
},
ecmaVersion: 2017,
sourceType: 'module'
},
globals: {
},
// [中文文档: http://eslint.cn/docs/rules/ ](http://eslint.cn/docs/rules/)
rules: {
'no-const-assign': 'warn',
'no-this-before-super': 'warn',
'no-unreachable': 'warn',
'constructor-super': 'warn',
'valid-typeof': 'warn',
/* Possible Errors 逻辑相关 */
// 默认设置已经开启了大部分,此处仅进行一点扩展
// for循环方向检查
'for-direction': 'error',
/* Variables 变量声明*/
// 控制变量声明时是否要初始化 默认为["error", "always"]
'init-declarations': 'off',
// 不允许在 catch 语句中遮盖变量 因为需要兼容IE8,因此打开,避免错误
'no-catch-shadow': 'error',
// 禁止删除变量
'no-delete-var': 'warn',
// 禁止变量声明覆盖外层作用域的变量
'no-shadow': 'warn',
// 关键字不能被遮蔽 如 var undefined; function NaN(){} 等
'no-shadow-restricted-names': 'error',
// 禁用未声明的变量,除非它们在 /*global */ 注释中被提到
'no-undef': 'error',
// 禁止使用undefined作为标识符 此处关闭,因为已经禁止关键字被遮蔽,不存在undefined不是undefined的情况
'no-undefined': 'off',
// 禁止出现未使用过的变量
'no-unused-vars': 'warn',
// 把 var 语句看作是在块级作用域范围之内
'block-scoped-var': 'warn',
// console
'no-console': 'warn',
'no-empty': 'off',
/* Best Practices 最佳实践 */
// 强制 getter 和 setter 在对象中成对出现 用不到
'accessor-pairs': 'off',
// 强制数组方法的回调函数中有 return 语句 同上
'array-callback-return': 'off',
// 限制圈复杂度 即 条件判断的各种分支
complexity: [
'error',
{
max: 40
}
],
// 要求 return 语句要么总是指定返回的值,要么不指定
'consistent-return': 'off',
// 强制所有控制语句使用一致的括号风格
// "curly": "warn",
curly: ['error', 'multi-line'],
// 要求 switch 语句中有 default 分支
'default-case': 'warn',
// 强制在点号之前或之后换行
'dot-location': ['error', 'property'],
// 要求使用点号 尽可能使用.而不是[]
'dot-notation': 'warn',
// 要求使用 ===
eqeqeq: 'off',
// 要求 for-in 循环中有一个 if 语句,防止不必要的对原型属性进行处理
'guard-for-in': 'warn',
// 禁用 alert、confirm 和 prompt 交付代码中应该是不出现这东西的
'no-alert': 'warn',
// 禁用 arguments.caller 或 arguments.callee 规范已经禁止使用了
'no-caller': 'warn',
// 不允许在 case 子句中使用词法声明 eslint推荐配置就是开启的,无需调整
// "no-case-declarations"
// 禁止除法操作符显式的出现在正则表达式开始的位置 "no-div-regex"
// 禁止 if 语句中 return 语句之后有 else 块
// 如下:else是多余的
// if (x) {
// return y;
// } else {
// return z;
// }
'no-else-return': 'warn',
// 禁止空函数 可能需要 推荐未开启 不调整
// "no-empty-function": "off",
// 禁止使用空解构模式,推荐已经开启 不调整
// "no-empty-pattern"
// 禁止在没有类型检查操作符的情况下与 null 进行比较
'no-eq-null': 'error',
// 禁用 eval() 关闭
'no-eval': 'off',
// 禁止扩展原生类型
'no-extend-native': 'error',
// 禁止不必要的 .bind() 调用
'no-extra-bind': 'warn',
// 禁止case语句落空,可保证至多进入一个分支 推荐已经开启 不调整
// "no-fallthrough":"error",
// 禁止数字字面量中使用前导和末尾小数点 即禁止 .2 2. 这样的写法
'no-floating-decimal': 'warn',
// 禁止重新对全局变量赋值 推荐已经开启,不调整
// "no-global-assign":"error",
// 禁止使用较短的符号实现类型转换 如! !! 等,比较实用而且默认也没开始 保持关闭
// "no-implicit-coercion": "off",
// 禁止只用new而不赋值
// 如 new Person()
'no-new': 'warn',
// 禁止自身比较
'no-self-compare': 'warn',
// 禁止不必要的 .call() 和 .apply()
'no-useless-call': 'warn',
// 禁用 with 语句
'no-with': 'error',
// 强制在parseInt()使用基数参数
radix: 'warn',
// 要求 IIFE 使用括号括起来
'wrap-iife': 'off',
// 以下是未开启的 也就保持不动了
// "no-octal" // 禁用八进制字面量
// "no-redeclare" // 禁止多次声明同一变量
// "no-self-assign" // 禁止自我赋值
// "no-unused-labels" // 禁用出现未使用过标签
// "no-useless-escape" // 禁用不必要的转义字符
// no-implicit-globals // 禁止在全局范围内使用变量声明和 function 声明
// no-implied-eval // 禁止使用类似 eval() 的方法
// no-invalid-this // 禁止 this 关键字出现在类和类对象之外
// no-iterator // 禁用 __iterator__ 属性
// no-labels // 禁用标签语句
// no-lone-blocks // 禁用不必要的嵌套块
// no-loop-func // 禁止在循环中出现 function 声明和表达式
// no-magic-numbers // 禁用魔术数字
// no-multi-spaces // 禁止使用多个空格
// no-multi-str // 禁止使用多行字符串
// no-new-func // 禁止对 Function 对象使用 new 操作符
// no-new-wrappers // 禁止对 String,Number 和 Boolean 使用 new 操作符
// no-octal-escape // 禁止在字符串中使用八进制转义序列
// no-param-reassign // 禁止对 function 的参数进行重新赋值
// no-proto // 禁用 __proto__ 属性
// no-restricted-properties // disallow certain properties on certain objects
// no-return-assign // 禁止在 return 语句中使用赋值语句
// no-return-await // disallow unnecessary return await
// no-script-url // 禁止使用 javascript: url
// no-sequences // 禁用逗号操作符
// no-throw-literal // 禁止抛出异常字面量
// no-unmodified-loop-condition // 禁用一成不变的循环条件
// no-unused-expressions // 禁止出现未使用过的表达式
// no-useless-concat // 禁止不必要的字符串字面量或模板字面量的连接
// no-useless-return // disallow redundant return statements
// no-void // 禁用 void 操作符
// no-warning-comments // 禁止在注释中使用特定的警告术语
// prefer-promise-reject-errors // require using Error objects as Promise rejection reasons
// require-await // disallow async functions which have no await expression
// vars-on-top // 要求所有的 var 声明出现在它们所在的作用域顶部
// yoda // 要求或禁止 “Yoda” 条件
// 分号警告
semi: 'warn',
// 单引号警告
quotes: ['warn', 'single'],
/* Stylistic 代码风格 参考 http://eslint.cn/docs/rules/#stylistic-issues*/
// 大括号风格,使用1tbs 单行是允许在同一行
'brace-style': [
'error',
'1tbs',
{
allowSingleLine: true
}
],
// 禁止或强制在计算属性中使用空格 即方括号中
'computed-property-spacing': ['warn', 'never'],
// 缩进 4个空格缩进,否则报错
// "indent": ["error", 4, {
// // case 字句缩进级别
// "SwitchCase": 1
// }],
// 禁止多行空白
'no-multiple-empty-lines': 'warn'
}
};