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"*/ |