webpack配置.eslintrc.js

67 阅读3分钟
/**
 * root 限定配置文件的使用范围
 * parser 指定eslint的解析器
 * parserOptions 设置解析器选项
 * extends 指定eslint规范,继承或扩展自哪里的配置,可以不用自定义rules,我们可以使用第三方的,这里我们就要使用extends配置项
 * plugins 引用第三方的插件
 * env 指定代码运行的宿主环境
 * rules 启用额外的规则或覆盖默认的规则
 * globals 声明在代码中的自定义全局变量
 * 详细配置,https://blog.csdn.net/amars_ding/article/details/103755362,https://blog.csdn.net/q3254421/article/details/86477502
 */

module.exports = {
    root: true,
    // extends: 'airbnb', // 继承或扩展自airbnb的配置
    /**
     * 解析器
     * http://eslint.cn/docs/user-guide/configuring#specifying-parser
     * ESLint 默认使用Espree作为其解析器
     * 解析器必须是本地安装的一个 npm 模块。即必须按照在本地的node_module中
     * 解析器是用于解析js代码的,怎么去理解每一个表达式,有点C++中编译器的概念,会对js进行一些语法分析,语义分析什么的,才能判断语句符不符合规范。而不是通过简单的字符串对比。
     * 解析器有很多,但兼容eslint的解析器有以下几个
     * Espree:默认解析器,一个从Esprima中分离出来的解析器,做了一些优化
     * Esprima:js标准解析器
     * Babel-ESLint: 一个对Babel解析器的包装,babel本身也是js解析器的一种(不然怎么能转化为兼容性代码呢?首先需要进行js解析,才能转化)。如果我们的代码需要经过babel转化,则对应使用这个解析器
     * typescript-eslint-parser(实验) - 一个把 TypeScript 转换为 ESTree 兼容格式的解析器
     */
    parser: 'babel-eslint', // 指定eslint的解析器
    /**
     * 解析器配置项
     * http://eslint.cn/docs/user-guide/configuring#specifying-parser-options
     * 这里设置的配置项将会传递到解析器中,被解析器获取到,进行一定的处理。具体被利用到,要看解析器的源码有没有对其进行利用。这里仅仅做了参数定义,做了规定,告诉解析器的开发者可能有这些参数
     * 配置项目有:
     * "sourceType": "module",  // 指定JS代码来源的类型,script(script标签引入?) | module(es6的module模块),默认为script。为什么vue的会使用script呢?因为vue是通过babel-loader编译的,而babel编译后的代码就是script方式
     * "ecmaVersion": 6,     // 支持的ES语法版本,默认为5。注意只是语法,不包括ES的全局变量。全局变量需要在env选项中进行定义
     * "ecmaFeatures": {     // Features是特征的意思,这里用于指定要使用其他那些语言对象
         "experimentalObjectRestSpread": true, //启用对对象的扩展
         "jsx": true,              //启用jsx语法
         "globalReturn":true,          //允许return在全局使用
         "impliedStrict":true          //启用严格校验模式
       }
     */
    parserOptions: { // 设置解析器选项
        sourceType: "module", // 按照模块的方式解析
        ecmaVersion: 2015
    },
    env: {
        browser: true, // 指定运行环境为浏览器环境
        node: true
    },
    rules: {
        // off 或 0 -- 关闭规则    warn 或 1 -- 开启规则,警告级别(不会导致程序退出)   error 或 2 -- 开启规则,错误级别(当被触发的时候,程序会退出)
        indent: 'off', // 缩进
        quotes: [1, "single"], // 引号的类型,单引号还是双引号
        'no-console': 'off', // 不能出现console
    }
}