/**
* 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
* 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
* 这里设置的配置项将会传递到解析器中,被解析器获取到,进行一定的处理。具体被利用到,要看解析器的源码有没有对其进行利用。这里仅仅做了参数定义,做了规定,告诉解析器的开发者可能有这些参数
* 配置项目有:
* "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
}
}