【工具】js eslint基础配置入门

1,649 阅读3分钟

全局安装

npm install -g eslint

然后进入项目下,执行eslint --init,然后按需选择即可(react/vue、typescript、node/browser等,选择即可),最后询问是否立即npm install包(可选否,自己后面用yarn之类的安装,否则选是即可),将自动生成配置文件。

基础(可跳过)

配置文件

.eslintrc.js.eslintrc.json.eslintrc.yml等均可

三个相对有用的属性

(1) parser,语法分析器

ESLint 默认使用Espree作为其解析器,你可以在配置文件中指定一个不同的解析器,只要该解析器符合下列要求:

  1. 它必须是本地安装的一个 npm 模块。
  2. 它必须有兼容 Esprima 的接口(它必须输出一个 parse() 方法)
  3. 它必须产出兼容 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包命名一般分两种以区别:

  1. 规则包:eslint-config-xxx,基于已有规则,提供特定的代码风格检查
  2. 插件包:eslint-plugin-xxx,可提供新的规则

书写规律:

extends 中可以省略包名的前缀 eslint-config-eslint-plugin-

  1. 规则包:包名 or 包名:(路径或可分享的配置)
"extends": [
        "eslint:recommended",
        "standard",
    ],
  1. 插件包: 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