ESLint 提供了一组默认的推荐规则配置,这些规则都开启了错误级别。要使用默认规则,可以在 ESLint 配置文件中填写:
{"extends": "eslint:recommended"
}
这会开启以下规则:
- for-direction - 要求 for 循环中 update 语句为循环变量递增或递减
- no-async-promise-executor - 禁止使用异步函数作为 Promise executor
- no-await-in-loop - 禁止在循环中出现 await
- no-compare-neg-zero - 禁止与 -0 进行比较
- no-cond-assign - 禁止条件表达式中出现赋值操作符
- no-console - 禁止使用 console
- no-constant-condition - 禁止在条件中使用常量表达式
- no-control-regex - 禁止在正则表达式中使用控制字符
- no-debugger - 禁止使用 debugger
- no-dupe-args - 禁止函数定义中出现重复的参数
- no-dupe-keys - 禁止对象字面量中出现重复的键
- no-duplicate-case - 禁止出现重复的 case 标签
- no-empty - 禁止出现空语句块
- no-empty-character-class - 禁止在正则表达式中使用空字符集
- no-ex-assign - 禁止对 catch 子句的参数重新赋值
- no-extra-boolean-cast - 禁止不必要的布尔转换
- no-extra-parens - 禁止不必要的括号
- no-extra-semi - 禁止不必要的分号
- no-func-assign - 禁止对 function 声明重新赋值
- no-inner-declarations - 禁止在嵌套的块中出现变量声明或 function 声明
- no-invalid-regexp - 禁止 RegExp 构造函数中存在无效的正则表达式字符串
- no-irregular-whitespace - 禁止在字符串和注释之外不规则的空白
- no-obj-calls - 禁止将全局对象作为函数调用
- no-prototype-builtins - 禁止直接使用__proto__属性
- no-regex-spaces - 禁止正则表达式字面量中出现多个空格
- no-sparse-arrays - 禁止稀疏数组
- no-template-curly-in-string - 禁止在字符串中使用模板字面量占位符语法
- no-unexpected-multiline - 禁止出现令人困惑的多行表达式
- no-unreachable - 禁止在return、throw、break 和 continue 语句之后出现不可达代码
- no-unsafe-finally - 禁止在 finally 语句块中出现控制流语句
- no-unsafe-negation - 禁止对关系运算符的左操作数使用否定操作符
- use-isnan - 要求使用 isNaN() 检查 NaN
- valid-jsdoc - 强制使用合法的 JSDoc 注释
- valid-typeof - 强制 typeof 表达式与有效的字符串进行比较
如果不想开启 ESLint 推荐的某些规则,可以在 rules 字段中进行覆盖。例如:
{"extends": "eslint:recommended","rules": {"no-console": "off","no-unused-vars": "warn"}
}
这会:
- 继承 eslint:recommended 推荐的规则
- 关闭 no-console 规则
- 将 no-unused-vars 规则 severity 从 error 改为 warn关闭或修改规则的方法有:
关闭或修改规则的方法有:
- “off” 或 0 - 关闭规则
"no-console": "off"
- “warn” 或 1 - 开启规则,使用 warning 级别的错误
"no-unused-vars": "warn"
- “error” 或 2 - 开启规则,使用 error 级别的错误
"no-async-promise-executor": "error"
- 修改规则的选项
"no-unused-vars": ["error", { "vars": "local" }]
这将 no-unused-vars 规则限制到只检查局部变量。
另外,在代码中可以使用注释 /* eslint-disable */ 来临时关闭某条规则。例如:
console.log('foo') /* eslint-disable no-console */
这会在这一行关闭 no-console 规则。使用 /* eslint-enable */ 来重新开启规则。
通过上述方法,可以很灵活的控制 ESLint 规则的开启和错误级别。对于某些不适用于当前项目的规则,关闭它们会使得 ESLint 检查更加符合预期。所以根据自己的项目特点来配置 ESLint 规则可以最大限度发挥其作用。