Eslint参考手册
规则 | Rules
Rules
ESLint中的规则按类别分组以帮助您了解其目的。
没有规则默认启用。"extends": "eslint:recommended"
配置文件中的属性支持报告常见问题的规则,下面有复选标记。
在--fix
命令行上选择自动修复由具有低于扳手规则报告的问题(目前主要是空格)。
可能的错误
这些规则涉及JavaScript代码中可能的语法或逻辑错误:
for-dirction |
强制执行“for循环更新子句”将计数器向正确的方向移动。 |
---|---|
gette-return |
在getter中强制执行return语句 |
no-await-in-loop |
不允许在循环内部等待 |
no-compare-neg-zero |
不允许与-0进行比较 |
no-cond-assign |
在条件表达式中禁止赋值运算符 |
no-console |
禁止使用控制台 |
no-constant-condition |
在条件中不允许常量表达式 |
no-control-regex |
禁止在正则表达式中使用控制字符 |
no-debugger |
禁止使用调试器 |
no-dupe-args |
禁止在函数定义中使用重复的参数 |
no-dupe-keys |
不允许在对象文字中使用重复的键 |
no-duplicate-case |
不允许重复的标签 |
no-empty |
禁止空块语句 |
no-empty-character-class |
禁止在正则表达式中使用空字符类 |
no-ex-assign |
不允许在catch子句中重新分配异常 |
no-extra-boolean-cast |
禁止不必要的布尔转换 |
no-extra-parens |
禁止不必要的括号 |
no-extra-semi |
禁止不必要的分号 |
no-func-assign |
禁止重新分配函数声明 |
no-inner-declarations |
不允许嵌套块中的变量或函数声明 |
no-invalid-regexp |
禁止RegExp构造函数中的无效正则表达式字符串 |
no-irregular-whitespace |
禁止字符串和注释之外的不规则空白 |
no-obj-calls |
不允许调用全局对象属性作为函数 |
no-prototype-builtins |
不允许直接在对象上调用一些Object.prototype方法 |
no-regex-spaces |
禁止在正则表达式中使用多个空格 |
no-sparse-arrays |
不允许稀疏数组 |
no-template-curly-in-string |
不允许使用常规字符串中的模板文字占位符语法 |
no-unexpected-multiline |
不允许混淆多行表达式 |
no-unrachable |
返回,抛出,继续和中断语句后禁止无法访问的代码 |
no-unsafe-finally |
在finally块中禁止控制流语句 |
no-unsafe-negatio |
不允许否定关系运算符的左操作数 |
use-isnan |
在检查NaN时需要调用isNaN() |
valid-jsdoc |
执行有效的JSDoc评论 |
valid-typeof |
强制将typeof表达式与有效字符串进行比较 |
最佳实践
这些规则涉及更好的方法来帮助您避免问题:
accessor-pairs |
在对象中强制执行getter和setter对 |
---|---|
array-callback-return |
在数组方法的回调中强制执行返回语句 |
block-scoped-var |
在他们定义的范围内强制使用变量 |
class-methods-use-this |
强制该类方法利用这一点 |
complexity |
强化程序中允许的最大圈复杂度 |
consistent-return |
要求返回语句总是或永远不指定值 |
curly |
为所有控制语句强制使用一致的括号样式 |
default-case |
在switch语句中需要默认情况 |
dot-location |
在点之前和之后强制执行一致的换行符 |
dot-notation |
尽可能强制使用点符号 |
eqeqeq |
需要使用===和!== |
guard-for-in |
要求for-in循环包含if语句 |
no-alert |
禁止使用警报,确认和提示 |
no-caller |
禁止使用arguments.caller或arguments.callee |
no-case-declarations |
在case子句中不允许使用词法声明 |
no-div-regex |
在正则表达式的开头明确禁止除法运算符 |
no-else-return |
在if语句中返回语句后禁止其他块 |
no-empty-function |
禁止空功能 |
no-empty-pattern |
不允许空的解构模式 |
no-eq-null |
在没有类型检查运算符的情况下禁止空比较 |
no-eval |
不允许使用eval() |
no-extend-native |
不允许扩展本地类型 |
no-extra-bind |
禁止对.bind()进行不必要的调用 |
no-extra-label |
禁止不必要的标签 |
no-fallthrough |
不允许病例陈述的延期 |
no-floating-decimal |
不允许数字文字中的前导小数点或尾随小数点 |
no-global-assign |
禁止分配本地对象或只读全局变量 |
no-implicit-coercion |
不允许简写类型转换 |
no-implicit-globals |
在全局范围内禁止变量和函数声明 |
no-implied-eval |
不允许使用类似eval()的方法 |
no-invalid-this |
禁止在类或类对象之外使用此关键字 |
no-iterator |
禁止使用__iterator__属性 |
no-labels |
不允许带标签的声明 |
no-lone-blocks |
禁止不必要的嵌套块 |
no-loop-func |
在循环语句中禁止函数声明和表达式 |
no-magic-numbers |
不允许幻数 |
no-multi-spaces |
禁止多个空格 |
no-multi-str |
禁止多行字符串 |
no-new |
在任务或比较之外禁止新的操作员 |
no-new-func |
禁止使用Function对象的新操作符 |
no-new-wrappers |
禁止使用String,Number和Boolean对象的新操作符 |
no-octal |
不允许使用八进制文字 |
no-octal-escape |
禁止字符串文字中的八进制转义序列 |
no-param-reassign |
禁止重新分配功能参数 |
no-proto |
禁止使用__proto__属性 |
no-redeclare |
禁止变量重新声明 |
no-restricted-properties |
禁止某些对象的某些属性 |
no-return-assign |
在返回语句中禁止赋值运算符 |
no-return-await |
禁止不必要的回报等待 |
no-script-url |
禁止javascript:网址 |
no-self-assign |
不允许双方完全相同的任务 |
no-self-compare |
不允许在双方完全相同的情况下进行比较 |
no-sequences |
禁止逗号运算符 |
no-throw-literal |
不允许抛出文字作为例外 |
no-unmodified-loop-condition |
禁止未经修改的循环条件 |
no-unused-expressions |
禁止不使用的表达式 |
no-unused-labels |
禁止未使用的标签 |
no-useless-call |
禁止不必要的调用.call()和.apply() |
no-useless-concat |
不允许不必要的文字或模板字面连接 |
no-useless-escape |
禁止不必要的转义字符 |
no-useless-return |
不允许多余的返回语句 |
no-void |
禁止无效操作员 |
no-warning-comments |
禁止在评论中指定警告条款 |
no-with |
不接受陈述 |
prefer-promise-reject-errors |
要求使用Error对象作为Promise拒绝原因 |
radix |
在使用parseInt()时强制一致使用radix参数 |
require-await |
禁止不具有等待表达式的异步函数 |
vars-on-top |
要求将var声明放置在其包含范围的顶部 |
wrap-iife |
围绕立即函数调用需要括号 |
yoda |
要求或不允许“Yoda”条件 |
严格模式
这些规则涉及严格的模式指令:
strict |
要求或不允许严格的模式指令 |
---|
变量
这些规则涉及变量声明:
init-declarations |
在变量声明中要求或不允许初始化 |
---|---|
no-catch-shadow |
禁止外部作用域中影子变量的catch子句参数 |
no-delete-var |
不允许删除变量 |
no-label-var |
禁止与变量共享名称的标签 |
no-restricted-globals |
禁止指定的全局变量 |
no-shadow |
不允许来自外部作用域中声明的阴影变量的变量声明 |
no-shadow-restricted-names |
禁止遮蔽限制名称的标识符 |
no-undef |
禁止使用未声明的变量,除非在/* global */ comments中提及 |
no-undef-init |
不允许初始化变量未定义 |
no-undefined |
禁止使用未定义的标识符 |
no-unused-vars |
禁止未使用的变量 |
no-use-before-define |
在定义之前不允许使用变量 |
Node.js 和 CommonJS
这些规则与在Node.js中运行的代码或者在CommonJS浏览器中运行的代码相关:
callback-return |
回调后需要返回语句 |
---|---|
global-require |
要求require()调用放置在顶级模块范围内 |
handle-callback-err |
需要在回调中进行错误处理 |
no-buffer-constructor |
不允许使用Buffer()构造函数 |
no-mixed-requires |
禁止要求调用与常规变量声明混合使用 |
no-new-require |
禁止新的运营商打电话要求 |
no-path-concat |
不允许使用__dirname和__filename进行字符串连接 |
no-process-env |
禁止使用process.env |
no-process-exit |
禁止使用process.exit() |
no-restricted-modules |
在按要求加载时禁止指定的模块 |
no-sync |
禁止同步方法 |
文体问题
这些规则与风格指南相关,因此非常主观:
array-bracket-newline |
在打开和关闭数组括号之前强制执行换行符 |
---|---|
array-bracket-spacing |
强制数组括号内的一致间距 |
array-element-newline |
在每个数组元素之后强制换行 |
block-spacing |
禁止或强制执行开放区块之前和结束区块之前区块内的空间 |
brace-style |
为块执行一致的支撑样式 |
camelcase |
强制执行camelcase命名约定 |
capitalized-comments |
强制或禁止评论首字母的大写 |
comma-dangle |
需要或不允许尾随逗号 |
comma-spacing |
在逗号前后加一致间距 |
comma-style |
强制使用一致的逗号样式 |
computed-property-spacing |
在计算的属性括号内强制执行一致的间距 |
consistent-this |
在捕获当前执行上下文时强制执行一致的命名 |
eol-last |
在文件结尾处要求或禁止换行 |
func-call-spacing |
要求或不允许功能标识符与其调用之间的间隔 |
func-name-matching |
需要函数名称来匹配它们被分配到的变量或属性的名称 |
func-names |
要求或禁止命名的函数表达式 |
func-style |
强制执行任何函数声明或表达式的一致使用 |
function-paren-newline |
在函数括号内强制执行一致的换行符 |
id-blacklist |
禁止指定标识符 |
id-length |
强制实施最小和最大标识符长度 |
id-match |
要求标识符与指定的正则表达式匹配 |
implicit-arrow-linebreak |
强制执行箭头函数体的位置 |
indent |
强制执行一致的缩进 |
jsx-quotes |
在JSX属性中强制使用双引号或单引号 |
key-spacing |
在对象字面量属性中强制键和值之间的一致间距 |
keyword-spacing |
在关键字之前和之后执行一致的间距 |
line-comment-position |
强制行注释的位置 |
linebreak-style |
执行一致的换行样式 |
lines-around-comment |
在评论周围需要空行 |
lines-between-class-members |
要求或不允许类成员之间的空行 |
max-depth |
强制块可以嵌套的最大深度 |
max-len |
强制执行最大行长度 |
max-lines |
强制每个文件的最大行数 |
max-nested-callbacks |
强制回调可以嵌套的最大深度 |
max-params |
在函数定义中强制实施最大数量的参数 |
max-statements |
强制实现功能块中允许的最大数量的语句 |
max-statements-per-line |
强制每行允许的最大数量的语句 |
multiline-comment-style |
为多行注释强制执行特定的样式 |
multiline-ternary |
在三元表达式的操作数之间强制换行 |
new-cap |
要求构造函数名以大写字母开头 |
new-parens |
调用不带参数的构造函数时需要括号 |
newline-per-chained-call |
每次在方法链中调用后都需要一个换行符 |
no-array-constructor |
不允许使用数组构造函数 |
no-bitwise |
不允许按位运算符 |
no-continue |
禁止继续语句 |
no-inline-comments |
代码后不允许内嵌评论 |
no-lonely-if |
不允许if语句作为else块中的唯一语句 |
no-mixed-operators |
不允许混合二元运算符 |
no-mixed-spaces-and-tabs |
不允许混合空格和制表符缩进 |
no-multi-assign |
禁止使用链式赋值表达式 |
no-multiple-empty-lines |
禁止多个空行 |
no-negated-condition |
禁止否定条件 |
no-nested-ternary |
禁止嵌套的三元表达式 |
no-new-object |
禁止Object构造函数 |
no-plusplus |
禁止一元运算符++和 - |
no-restricted-syntax |
禁止指定语法 |
no-tabs |
禁止所有标签 |
no-ternary |
禁止三元操作员 |
no-trailing-spaces |
不允许在行尾添加尾随空白 |
no-underscore-dangle |
在标识符中禁止悬挂下划线 |
no-unneeded-ternary |
当存在更简单的替代方案时,禁止使用三元运算符 |
no-whitespace-before-property |
在属性之前禁止使用空格 |
nonblock-statement-body-position |
强制执行单行语句的位置 |
object-curly-newline |
在大括号内强制执行一致的换行符 |
object-curly-spacing |
在大括号内强制执行一致的间距 |
object-property-newline |
强制将对象属性放在不同的行上 |
one-var |
强制变量在功能中一起或分开声明 |
one-var-declaration-per-line |
需要或不允许变量声明的换行符 |
operator-assignment |
在可能的情况下要求或禁止分配操作员速记 |
operator-linebreak |
为运营商强制执行一致的换行符 |
padded-blocks |
要求或禁止块内的填充 |
padding-line-between-statements |
在语句之间需要或不允许填充行 |
quote-props |
需要引用对象字面值属性名称 |
quotes |
强制一致使用反引号,双引号或单引号 |
require-jsdoc |
需要JSDoc评论 |
semi |
需要或不允许使用分号而不是ASI |
semi-spacing |
在分号之前和之后强制执行一致的间距 |
semi-style |
强制分号的位置 |
sort-keys |
需要对对象键进行排序 |
sort-vars |
要求对同一个声明块中的变量进行排序 |
space-before-blocks |
在块之前强制执行一致的间距 |
space-before-function-paren |
在函数定义左括号之前加强一致的间距 |
space-in-parens |
在括号内加强一致的间距 |
space-infix-ops |
需要中缀运算符的间隔 |
space-unary-ops |
在一元运算符之前或之后执行一致的间距 |
spaced-comment |
在注释中的//或/ *之后强制执行一致的间距 |
switch-colon-spacing |
在switch语句的冒号周围强制执行间隔 |
template-tag-spacing |
要求或不允许模板标签及其文字之间的间距 |
unicode-bom |
要求或不允许Unicode字节顺序标记(BOM) |
wrap-regex |
围绕正则表达式文字需要括号 |
ECMAScript 6
这些规则涉及ES6,也称为ES2015:
arrow-body-style |
需要箭头功能体周围的括号 |
---|---|
arrow-parens |
需要箭头函数参数的括号 |
arrow-spacing |
在箭头函数中的箭头之前和之后强制执行一致的间距 |
constructor-super |
在构造函数中需要super()调用 |
generator-star-spacing |
在生成器函数中强制执行*操作符间的一致间距 |
no-class-assign |
禁止重新分配班级成员 |
no-confusing-arrow |
不允许箭头功能,他们可能会与比较混淆 |
no-const-assign |
禁止重新分配const变量 |
no-dupe-class-members |
不允许重复的类成员 |
no-duplicate-imports |
禁止重复模块导入 |
no-new-symbol |
禁止使用Symbol对象的新操作符 |
no-restricted-imports |
通过导入装入时禁止指定的模块 |
no-this-before-super |
在构造函数中调用super()之前,禁止使用this/super |
no-useless-computed-key |
禁止在对象文字中使用不必要的计算属性键 |
no-useless-constructor |
禁止不必要的构造函数 |
no-useless-rename |
不允许将导入,导出和解构分配重命名为相同的名称 |
no-var |
需要let或const而不是var |
object-shorthand |
要求或不允许对象文字的方法和属性简写语法 |
prefer-arrow-callback |
需要使用箭头函数进行回调 |
prefer-const |
需要对声明后永远不会重新赋值的变量使用常量声明 |
prefer-destructuring |
需要从数组和/或对象进行解构 |
prefer-numeric-literals |
禁止parseInt()和Number.parseInt()支持二进制,八进制和十六进制文字 |
prefer-rest-params |
需要休息参数而不是参数 |
prefer-spread |
需要扩展运算符而不是.apply() |
prefer-template |
需要模板字面值而不是字符串连接 |
require-yield |
需要生成器函数来包含yield |
rest-spread-spacing |
强制休息和传播运算符及其表达式之间的间隔 |
sort-imports |
在模块中强制排序的导入声明 |
symbol-description |
需要符号描述 |
template-curly-spacing |
要求或不允许围绕嵌入的模板字符串表达式进行间距 |
yield-star-spacing |
*在yield *表达式中需要或不允许间距* |
弃用
这些规则根据弃用政策已被弃用,并由新规定取代:
Deprecated rule |
取而代之 |
---|---|
indent-legacy |
缩进 |
lines-around-directive |
填充线之间语句 |
newline-after-var |
填充线之间语句 |
newline-before-return |
填充线之间语句 |
no-native-reassign |
没有全局指派 |
no-negated-in-lhs |
没有不安全的否定 |
no-spaced-func |
FUNC呼叫间隔 |
prefer-reflect |
(没有替换) |
删除
旧版ESLint中的这些规则(在弃用策略存在之前)已被新规则取代:
Removed rule |
取而代之 |
---|---|
generator-star |
发电机星级间距 |
global-strict |
严格 |
no-arrow-condition |
无混乱-arrowno恒定条件 |
no-comma-dangle |
逗号吊着 |
no-empty-class |
无空字符类 |
no-empty-label |
无标签 |
no-extra-strict |
strict |
no-reserved-keys |
报价道具 |
no-space-before-semi |
半间距 |
no-wrap-func |
no-extra-parens |
space-after-function-name |
空间前方的功能括号 |
space-after-keywords |
关键字间距 |
space-before-function-parentheses |
空间前方的功能括号 |
space-before-keywords |
关键字间距 |
space-in-brackets |
对象卷曲spacingarray支架间距 |
space-return-throw-case |
关键字间距 |
space-unary-word-ops |
space-unary-ops |
spaced-line-comment |
间隔评论 |
规则 | Rules相关

ESLint 是一个代码规范和错误检查工具,有以下几个特性。所有东西都是可以插拔的。你可以调用任意的 rule api 或者 formatter api 去打包或者定义 rule or formatter。任意的 rule 都是独立的。没有特定的 coding style,你可以自己配置。
主页 | https://eslint.org/ |
源码 | https://github.com/eslint/eslint |
发布版本 | 4.12.0 |