ESLint 由 JavaScript 红宝书 作者 Nicholas C. Zakas 编写, 2013 年发布第一个版本。 NCZ 的初衷不是重复造一个轮子,而是在实际需求得不到 JSHint 团队响应 的情况下做出的选择:以可扩展、每条规则独立、不内置编码风格为理念编写一个 lint 工具。

安装
npm install -g eslint
初始化
项目还没有配置文件(.eslintrc)的话,可以通过指定–init参数来生成一个新的配置文件:
eslint --init
运行eslint –init后,会在当前目录下生成一个.eslintrc文件,你可以在这个文件中配置一些规则。
配置
ESLint被设计为完全可配置的,主要有两种方式来配置ESLint:
- 内嵌配置:将配置信息以注释的形式写在要检验的文件内
 - 文件配置:利用javascript、json、yml语言的语法,生成名为.eslintrc.*的配置文件,将配置信息写到文件内
 
文件配置方式
env:你的脚本将要运行在什么环境中
Environment可以预设好的其他环境的全局变量,如brower、node环境变量、es6环境变量、mocha环境变量等
1  | 'env': {  | 
globals:额外的全局变量
1  | 示例:  | 
parserOptions: ** JavaScript 语言选项
1  | "parserOptions": {  | 
rules:开启规则和发生错误时报告的等级
规则的错误等级有三种:
- 0或’off’:关闭规则。
 - 1或’warn’:打开规则,并且作为一个警告(并不会导致检查不通过)。
 - 2或’error’:打开规则,并且作为一个错误 (退出码为1,检查不通过)。
 
eslint 规则
1  | 
  | 
一些错误的正确修改
Prevent definitions of unused state (react/no-unused-state)
以下模式被认为是警告:
1  | class MyComponent extends React.Component {  | 
以下模式不被视为警告:
1  | class MyComponent extends React.Component {  | 
react prop-types
propTypes能用来检测全部数据类型的变量,包括基本类型的的字符串,布尔值,数字,以及引用类型的对象,数组,函数,甚至还有ES6新增的符号类型
1  | 
  | 
使用parseInt()函数
当使用parseInt()函数时,通常省略第二个参数 radix,并让函数尝试从第一个参数确定它是什么类型的数字。默认情况下,parseInt()将自动检测十进制和十六进制(通过0x前缀)。在 ECMAScript 5之前,parseInt()还会自动检测八进制文字,这会导致问题,因为许多开发人员认为领先的文字0会被忽略。
不要这样做:
1  | var num = parseInt("071"); // 57  | 
做这个:
1  | var num = parseInt("071", 10); // 71  | 
条件逻辑里一定要加内容处理
1  | /*eslint no-empty: "error"*/  |