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 | 间隔评论 |