全局安装
npm install -g eslint
然后进入项目下,执行eslint --init,然后按需选择即可(react/vue、typescript、node/browser等,选择即可),最后询问是否立即npm install包(可选否,自己后面用yarn之类的安装,否则选是即可),将自动生成配置文件。
基础(可跳过)
配置文件
.eslintrc.js 、.eslintrc.json、.eslintrc.yml等均可
三个相对有用的属性
(1) parser,语法分析器
ESLint 默认使用Espree作为其解析器,你可以在配置文件中指定一个不同的解析器,只要该解析器符合下列要求:
- 它必须是本地安装的一个 npm 模块。
- 它必须有兼容 Esprima 的接口(它必须输出一个
parse()方法)- 它必须产出兼容 Esprima 的 AST 和 token 对象。
会用就行。目的在于前端框架如vue文件这些,不能用默认parser,默认parser只认识原生js相关文件。这个时候直接用第三方如parser: 'vue-eslint-parser' 。
(2)env
env: {
browser: false,
node: true,
es6: true
}
告诉eslint你在什么环境下js开发。实际上主要是判断一些全局变量是否合法,如浏览器中window对象
(3)extends(string数组)
指定当前规则配置从哪里继承。
相关的npm包命名一般分两种以区别:
- 规则包:eslint-config-xxx,基于已有规则,提供特定的代码风格检查
- 插件包:eslint-plugin-xxx,可提供新的规则
书写规律:
extends 中可以省略包名的前缀
eslint-config-、eslint-plugin-。
- 规则包:
包名or包名:(路径或可分享的配置)
"extends": [
"eslint:recommended",
"standard",
],
- 插件包:
plugin:包名/配置
"extends": [
"plugin:vue/recommended"
],
核心使用
即rules: {...},选择启用哪些规则。
规则的中文文档:Rules
例子:
"rules": {
"quotes": "error"
}
关于规则的值:
字符串或数字:
"off" or 0 - 关闭规则
"warn" or 1 - 将规则视为一个警告(不会影响退出码)
"error" or 2 - 将规则视为一个错误 (退出码为1)
数组形式:
"quotes": ["error", "double"],第一个值是错误级别,后面的值是选项(即参数),看文档查询即可
规则覆盖:
我们手动在rules定义的优先级最高,覆盖其他插件扩展的设置。
配置定义在插件中的一个规则的时候,你必须使用插件名/规则ID的形式。如:
{
"plugins": [
"plugin1"
],
"rules": {
"eqeqeq": "off",
"curly": "error",
"quotes": ["error", "double"],
"plugin1/rule1": "error"
}
}
文件中例外地设置
可以在你的文件中使用以下格式的块注释来临时禁止规则出现警告:
/* eslint-disable */
这里开始的代码不被eslint检查
/* eslint-enable */
这里开始的代码被eslint检查
你也可以对指定的规则启用或禁用警告:
/* eslint-disable no-alert, no-console */
alert('foo');
console.log('bar');
/* eslint-enable no-alert, no-console */
插件中的自定义规则同理,插件名/规则ID放入注释中即可。
vscode
装上eslint扩展,参考官方示例,vscode(等)还应当手动配置需要检查的文件类型
"eslint.validate": [
"javascript",
"javascriptreact", // 即jsx
"typescript",
"typescriptreact", // 即tsx
"html",
"vue"
],
使eslint可作为格式化工具,因此可使用vscode默认格式化快捷键,省去一个快捷键记忆
"eslint.format.enable": true,
注:更改vscode设置/重装包后有奇怪问题,尝试重启vscode