Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESLint Rules #39

Open
XXHolic opened this issue Jul 28, 2019 · 0 comments
Open

ESLint Rules #39

XXHolic opened this issue Jul 28, 2019 · 0 comments

Comments

@XXHolic
Copy link
Owner

XXHolic commented Jul 28, 2019

目录

引子

ESLint 里面的规则很多,针对 eslint:recommended 的配置进行集中了解。

简介

ESLint 是一个用于识别和报告在 ECMAScript / JavaScript 代码中发现的模式的工具,它的目的是让代码更加一致并避免 bug。在许多方面上与 JSLint 类似,但有一些不同之处:

  • ESLint 使用 Espree 解析 JavaScript。
  • ESLint 使用 AST 来评估代码中的模式。
  • ESLint 完全可插拔,每一个规则都是一个插件,你可以在运行时添加更多。

默认所有的规则都是不开启,使用 eslint --init 命令创建的配置文件,会有 "extends": "eslint:recommended" 的属性配置,下面就来看下对应这个设置的具体规则。

Rules

以下出现的规则是按照高版本到低版本排序

可能的错误

以下规则可能涉及到 JavaScript 代码的语法和逻辑错误。

规则 作用
no-async-promise-executor 禁止使用 async 函数作为 Promise 的执行体
no-misleading-character-class 禁止在字符类语法中出现由多个代码点组成的字符
require-atomic-updates 禁止由于 awaityield 的使用而可能导致出现竞态条件的赋值
getter-return 强制 getter 返回值
for-direction 强制 for 循环计数器合理更新,避免死循环
no-compare-neg-zero 禁止比较 -0
no-unsafe-negation 禁止对关系运算符的左操作数使用否定操作符
no-prototype-builtins 禁止直接调用 Object.prototype 的方法
no-unsafe-finally 禁止在 finally 块中出现控制流的语句
no-unexpected-multiline 禁止出现让人困惑的多行表达式
no-empty-character-class 禁止正则内空字符串集
no-dupe-args 禁止在 function 定义中使用重复参数
no-irregular-whitespace 禁止不规则空白
no-inner-declarations 禁止在嵌套的块中声明 varfunction
no-constant-condition 禁止在条件中使用常量表达式
no-extra-boolean-cast 禁止不必要的布尔类型转换
no-invalid-regexp 禁止在正则构造函数中使用非法字符
no-control-regex 禁止在正则中使用控制字符
no-cond-assign 禁止在条件语句中使用赋值运算符
no-dupe-keys 禁止对象键重复
no-ex-assign 禁止在 catch 中重新分配异常
no-extra-semi 禁止出现不必要的分号
no-func-assign 禁止重分配函数声明
no-obj-calls 禁止将全局对象属性作为函数调用
no-unreachable 禁止在 return, throw, continue, break 声明之后有不能抵达的代码
valid-typeof 强制使用 typeof 表达式跟有效的字符串比较
use-isnan 要求使用 isNaN() 检查 NaN
no-regex-spaces 禁止正则表达式中出现多个空格
no-sparse-arrays 禁止使用 [,'Tom',] 这类数组
no-debugger 禁止使用 debugger
no-empty 禁止空的块声明

最佳实践

规则 作用
no-useless-catch 禁止非必要的 catch
no-global-assign 禁止对原生对象或者只读全局变量赋值
no-useless-escape 禁用不必要的转义字符
no-self-assign 禁止自我赋值
no-unused-labels 禁止出现未使用的标签
no-case-declarations 禁止在 case 语句中直接使用词法声明
no-empty-pattern 禁止使用空的解构模式
no-redeclare 禁止变量重复声明
no-fallthrough 禁止 case 语句下通
no-octal 禁止使用八进制字面量
no-with 禁止使用 with 语句

变量

规则 作用
no-shadow-restricted-names 禁止将标识符定义为受限的名字
no-delete-var 禁止删除变量
no-undef 禁用使用未声明的变量,除非在 /* global */ 注释中被提到
no-unused-vars 禁用出现未使用的变量

格式问题

规则 作用
no-mixed-spaces-and-tabs 禁用缩进中空格和 Tab 混合

ES 6

规则 作用
no-new-symbol 禁止对 Symbol 对象使用 new 操作符
no-dupe-class-members 禁止声明重复的类成员
no-class-assign 禁止修改类声明的变量
no-const-assign 禁止修改 const 声明的变量
require-yield 要求 generator 函数内有 yield
constructor-super 要求在构造函数中调用 super()
no-this-before-super 禁止在构造函数中,在调用 super() 之前使用 thissuper

弃用规则

平衡提升工具和改变可能带来的挫败感是一个艰难的任务。影响我们用户的一个关键方面就是弃用规则。

ESLint 团队尽可能小心的进行提交升级。到最后,团队同意在将来按照下面的方针弃用规则。这些方针的目的是在没有破坏现有配置前提下,允许进行改进和修改。

  • 规则将永远不会从 ESLint 中移除。
  • 规则将会按照需要弃用,且在所有文档中标记。
  • 在一个规则被弃用后,团队将不会处理任何相关的工作,这将包含修复 bug、增强功能和更新规则的文档。跟弃用规则相关的提问和提交将不会被接受,并且将关闭。

因为弃用的规则将永远不会被移除,如果那些规则对你适用,你可以一直使用它们。然而,请记住这些弃用的规则将不会被维护。

我们希望通过遵循这些方针,可以继续工作和提升,让 ESLint 变成能够成为的最好的工具,同时在这个过程中尽可能减少对我们用户的干扰。

参考资料

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant