非常教程

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相关

1.accessor-pairs
2.array-bracket-newline
3.array-bracket-spacing
4.array-callback-return
5.array-element-newline
6.arrow-body-style
7.arrow-parens
8.arrow-spacing
9.block-scoped-var
10.block-spacing
11.brace-style
12.callback-return
13.camelcase
14.capitalized-comments
15.class-methods-use-this
16.comma-dangle
17.comma-spacing
18.comma-style
19.complexity
20.computed-property-spacing
21.consistent-return
22.consistent-this
23.constructor-super
24.curly
25.default-case
26.dot-location
27.dot-notation
28.eol-last
29.eqeqeq
30.for-direction
31.func-call-spacing
32.func-name-matching
33.func-names
34.func-style
35.function-paren-newline
36.generator-star
37.generator-star-spacing
38.getter-return
39.global-require
40.global-strict
41.guard-for-in
42.handle-callback-err
43.id-blacklist
44.id-length
45.id-match
46.implicit-arrow-linebreak
47.indent
48.indent-legacy
49.init-declarations
50.jsx-quotes
51.key-spacing
52.keyword-spacing
53.line-comment-position
54.linebreak-style
55.lines-around-comment
56.lines-around-directive
57.lines-between-class-members
58.max-depth
59.max-len
60.max-lines
61.max-nested-callbacks
62.max-params
63.max-statements
64.max-statements-per-line
65.multiline-comment-style
66.multiline-ternary
67.new-cap
68.new-parens
69.newline-after-var
70.newline-before-return
71.newline-per-chained-call
72.no-alert
73.no-array-constructor
74.no-arrow-condition
75.no-await-in-loop
76.no-bitwise
77.no-buffer-constructor
78.no-caller
79.no-case-declarations
80.no-catch-shadow
81.no-class-assign
82.no-comma-dangle
83.no-compare-neg-zero
84.no-cond-assign
85.no-confusing-arrow
86.no-console
87.no-const-assign
88.no-constant-condition
89.no-continue
90.no-control-regex
91.no-debugger
92.no-delete-var
93.no-div-regex
94.no-dupe-args
95.no-dupe-class-members
96.no-dupe-keys
97.no-duplicate-case
98.no-duplicate-imports
99.no-else-return
100.no-empty
Eslint

ESLint 是一个代码规范和错误检查工具,有以下几个特性。所有东西都是可以插拔的。你可以调用任意的 rule api 或者 formatter api 去打包或者定义 rule or formatter。任意的 rule 都是独立的。没有特定的 coding style,你可以自己配置。

主页 https://eslint.org/
源码 https://github.com/eslint/eslint
发布版本 4.12.0

Eslint目录

1.指南 | Guide
2.规则 | Rules