是不是学了前端半年,依然只知道关闭eslint?那你还装了干啥哈?来,和黑马老邹一起掌握eslint吧! 后面会录制 和 vue脚手架 + vscode 的 ESLint关系与格式化器 讲解视频 b站:【一听就懂】ESLint详解
1.认识ESLint
需要注意的是:ESLint 有两个工具,一个是 模块包 ,一个是 VSCode的扩展工具 本结课主要讲 eslint 模块包
1.1 ESLint 包
1.2 VS中ESLint扩展工具
2.ESLint详解
【官网】https://eslint.bootcss.com/
2.1 介绍
2.2为什么要用ESLint
代码千万行,安全第一行;前端不规范,同事两行泪
2.3 eslint 用法
-
可以手动下载配置 -
可以通过vue脚手架创建项目时自动下载配置
3.手动下载配置(原理)
【官网】https://eslint.bootcss.com/docs/user-guide/getting-started
通过手动下载配置,可以帮我们更好的理解 eslint 的工作
3.1 创建项目
3.2 ESLint安装
-
直接在项目中安装eslint包 npm i eslint -D -
注意安装结果:node_moduels 中下载了很多包
3.3 生成ESLint配置文件
ESLint 可以创建独立的配置文件 .eslintrc.js,也可以 直接在 package.json 中配置
-
执行 node_modules/.bin 文件夹里的 eslint脚本 来创建配置文件
-
包含完整脚本路径的命令:./node_modules/.bin/eslint --init -
也可以用 npx 来执行 (推荐):npx eslint --init (npx是随node一起安装的,能去 .bin 目录 里找 目标脚本文件,简化执行脚本的语法) -
创建配置文件过程中,需要选择配置:
- 执行结果:
- 下载了相关规范包
- 主要是下载了 standard 语法规范包,而它需要 用到 import、node、promise 插件包
3.4 生成配置文件报错
- 在生成 配置文件最后面,虽然文件时有了,但会报出一个错:
- 如果不理,后面检查代码规范时,会导致检查失败:
Invalid ecmaVersion
3.5 解决方案
3.6 ESLint执行
4.ESLint配置文件入门
【官网】https://eslint.bootcss.com/docs/user-guide/configuring
4.1 配置文件格式
- eslint 加载的优先级是 : js > yaml > json,所以我们最好选择 js格式
4.2 JS格式使用模式
4.3 env节点
"env": {
"browser": true,
"commonjs": true,
"es2021": true
}
-
由于 ESLint 的各种规范中,一般都不允许使用未在页面内声明的成员 -
而开发中经常会用到 一些运行环境自带的 api,如:
-
浏览器中的 window/document 等 -
nodejs中的**__dirname** 等 -
es2021中的 WeakRef 等 -
所以要告诉eslint,当前代码是运行在哪些环境中,这样检查时就不会报错了
4.4 globals节点
- 当访问当前源文件内未定义的变量时,no-undef 规则将发出警告。如果你想在一个源文件里使用全局变量,推荐你在 ESLint 中定义这些全局变量,这样 ESLint 就不会发出警告了。你可以使用注释或在配置文件中定义全局变量。
"globals": {
"_": true
"$": false
}
4.5 extends 节点
"extends": [
"standard"
]
4.6 parserOptions 节点
"parserOptions": {
"ecmaVersion": 12
}
4.7 rules 节点
"rules": {
}
-
两个用法:
- 不使用
extend 节点 配置 整套的规范,而是在 rules 节点中直接配置
- 使用
extend 节点 配置 整套的规范,在 rules 节点中修改部分规范的配置 eg:
5.ESLint检查语法的规则
【官网】https://eslint.bootcss.com/docs/rules/
这些报错的起点在哪?ESLint 是按照什么规范来检查代码的呢?
5.1 ESLint语法规范本质
-
就是**【函数】** -
我们可以通过 看 ESLint 源码查看:
6. 语法规范包类型
-
前面看到,ESLint 安装时自带280多个规范,而开发时,未必都要使用,各个公司根据自己的习惯选择 -
所以就用了不同的选择组合: a. ESLint内置规范包 :eslint-all / eslint-recommended b. 标准规范包:eslint-config-standard c. 第三方规范包(google/airbnb/facebook…)
6.1 内置规范包
6.2 标准规范包(需要下载)
6.3 第三方规范包
有很多啊,我们就拿最流行的 airbnb 来举例
b.下载 相关包 npx install-peerdeps --dev eslint-config-airbnb-base
7. 配置规范包
7.1 修改 eslint 配置文件
module.exports = {
"env": {
"browser": true,
"commonjs": true,
"es2021": true
},
"extends": "eslint-config-standard",
"parserOptions": {
"ecmaVersion": 12
},
"rules": {
}
};
7.2 运行ESLint
npx eslint ./index.js
npx eslint ./src
7.3 测试不同包检查相同代码
let a = 1;
try {
console.log(a)
} catch (error) {
}
const ref = new WeakRef({ name: 'daotin' });
let obj = ref.deref();
if (obj) {
console.log(obj.name);
}
- 检查结果:严格程度 all > airbnb-base > standard > recommended
|