[9] 代码规范-Eslint

91 阅读3分钟

一、是什么

ESLint 是一个代码检查工具,主要用来检查语法,统一代码风格。
ESLint是个工具,需要安装它,并给它设置配置文件,自己会去找配置文件,然后根据配置文件知道该干什么。
ESLint 是完全插件化的。每一个规则都是一个插件并且你可以在运行时添加更多的规则。

二、配置Eslint

有以下几种配置方式:

  • JavaScript :使用.eslintrc.js文件导出一个包含配置的对象【推荐】
  • YAML:.eslintrc.yaml或者.eslintrc.yml
  • JSON:.eslintrc.json,并且此文件允许使用JS形式的注释
  • 废弃的用法:.eslintrc,此文件可以是JSON或者YAML
  • package.json:在package.json文件中创建eslintConfig属性,所有的配置包含在此属性中。

ESLint 会查找和自动读取它们。
文件的优先级则是按照以上出现的顺序(.eslintrc.js > .eslintrc.yaml > .eslintrc.yml > .eslintrc.json > .eslintrc > package.json)。

可以被配置的信息主要分为3类

  • Environments:你的 javascript 脚步将要运行在什么环境(如:nodejs,browser,commonjs等)中。
  • Globals:执行代码时脚步需要访问的额外全局变量。

当访问当前源文件内未定义的变量时,no-undef 规则将发出警告。如果你想在一个源文件里使用全局变量,推荐你在 ESLint 中定义这些全局变量,这样 ESLint 就不会发出警告了。

{
    "globals": {
        "var1": "writable", // 可编辑
        "var2": "readonly" // 只读
    }
}
  • Rules:开启某些规则,也可以设置规则的等级。

三、使用

3.1 安装

  1. 局部安装 yarn add eslint -D 【推荐本地安装
  2. 执行 一下指令,自动生成.eslintrc.* 文件
yarn run eslint --init

预设配置:不需理会,因为创建文件后还可以再设置: eslint配置规则

image.png

3 .eslintrc.js文件

module.exports = {
    "env": {// 如brower、node环境变量、es6环境变量、mocha环境变量等
        "browser": true,
        "es6": true,
        "node": true
    },
    "extends": [// 继承一套基础配置,帮你默认开启一些规则
        "eslint:recommended",
        "plugin:vue/essential"
    ],
    "globals": {// 额外的全局变量
        "Atomics": "readonly",
        "SharedArrayBuffer": "readonly"
    },
    "parserOptions": {// 解析器选项 
        "ecmaVersion": 2018,
        "sourceType": "module"
    },
    "plugins": [//eslint提供了有限的规则,插件的作用事引入别的包提供的规则,此插件引入的规则可以用于rules、env和extends等配置中。
        "vue"
    ],
    "rules": { // 开启,修改规则(no-console)和 发生错误时报告的等级 (error)   
    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',  // 生产环境不允许console
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', // 生产环境不允许console
    'quotes': ['error', 'single'],     //  错误级别和任何你想使用的选项,开启引号规则,当不是单引号时就报错。  
    'block-scoped-var': 0,     // 在块级作用域外访问块内定义的变量是否报错提示 
    }
};

3.2 规则

规则错误等级

0或'off':关闭规则。

1或'warn':打开规则,并且作为一个警告(并不会导致检查不通过)。

2或'error':打开规则,并且作为一个错误 (退出码为1,检查不通过)。

除了规则本身的取值之外,还支持一些自定义配置,给规则传递一个数组即可,数组第一项是规则等级,第二项是自定义配置。

参数说明:

参数1:错误等级

参数2:你想要的选项

  'quotes': ['error', 'single'],     //  错误级别和任何你想使用的选项,开启引号规则,当不是单引号时就报错。

3.3 如何配置.eslintrc.js

Configuring Plugins:

作用:ESLint 是完全插件化的。每一个规则都是一个插件并且你可以在运行时添加更多的规则。
ESLint 支持使用第三方插件。在使用插件之前,你必须使用 npm 安装它。
启用一个插件去校验什么代码。

3.4 几个指令

eslint src/**/*.{ts,js,vue} 检测

eslint src/**/*.{ts,js,vue} --fix 自动修复

四、参考

解析AST:www.astexplorer.net/