ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] >[success] # ESlint 如何配置 [Eslint文档](https://juejin.cn/post/6990929456382607374#heading-2) [ESLint 命令行使用](https://www.jianshu.com/p/4133063d1785) [使用ESLint和Prettier配置Angular项目](https://juejin.cn/post/7068967298953904159) 这里推荐 **2** 个 **vscode插件** ,**ESLint** 与 **Prettier - Code formatter** **ESLint**:用来规范或者约束代码,**例如引号用单引号还是双引号 ,代码结尾是否要加分号,定义变量是否被调用了,等等** **Prettier - Code formatter**:用来 **格式化代码** ,**例如代码不整齐,代码结尾没有加分号** ,都会自动给加上,**所以这两个插件配合起来一个负责约束代码一个负责格式化代码** ,保持了代码的统一性风格 >[success] ## 初始化项目 如果是 **vue项目** 或者 **angular 项目** ,不需要初始化项目,如果是一个 **空文件夹需要执行如下指令进行初始化项目** ~~~ npm init -y ~~~ 初始化成功后会在文件夹中生成一个 **package.json 文件**,如图 ![](https://img.kancloud.cn/cd/14/cd14486ff67937439bd12517ed9e60be_1009x429.png) >[success] ## 插件安装 用插件之前必须 先有 **npm 包**,再有 **vscode插件** ,所以我们首先需要安装 **npm** 包 **顺序 :npm包 > vscode插件** >[success] ### ESLint 插件安装 ~~~ // 全局安装 npm i -g eslint ~~~ 安装 **ESLint 的 npm 包** 后,执行指令初始化 **eslint** ~~~ npx eslint --init 或者 npm init @eslint/config ~~~ 第 1 步提示:**需要安装以下软件包:@eslint/create-config 继续还好吗?(y)** ![](https://img.kancloud.cn/42/1f/421f8e8101d16c9ef1aad44eb3af8f2c_1148x122.png) 第 2 步提示:您想如何使用 ESLint ,1.仅检查语法 2.检查语法并查找问题 3.检查语法、查找问题并强制实施代码样式 ,**这里我们选择第 2 项** ![](https://img.kancloud.cn/68/d0/68d02a1b8caba26172a73d50764b0cb8_1271x122.png) 第 3 步提示:这里选择 **js** ![](https://img.kancloud.cn/ab/af/abafec67570bcbecf428fa107317da2c_1081x92.png) 第 4 步提示:这里选择第3项哪个都不是 ![](https://img.kancloud.cn/15/04/1504a192f28688ce3abbb9fa6b0906a0_1086x95.png) 第 5 步提示:是否需要ts,这里选择自己项目需要的, ![](https://img.kancloud.cn/b5/3d/b53d56b2574c3040896df665e22e3800_706x54.png) 第 6 步提示:这里是用什么运行,2个都用空格勾选上 ![](https://img.kancloud.cn/ec/bc/ecbc0e774551ccaf5a53bb0641229cf5_1210x75.png) 第 7 步提示:这里选择 js ![](https://img.kancloud.cn/6f/ac/6fac6e15e05240e9bfeb52ec3318d086_1137x91.png) 第 8 步提示:这里问你是否直接进行npm下载配置,可以直接选择是 ![](https://img.kancloud.cn/5e/42/5e423e313c806ae2b1eed728777f4584_840x68.png) 初始化 **eslint** 完成后,项目文件中就会多出一个 **.eslintrc.js** 文件,这个文件中就是 **ESLint 的规则配置文件** **.eslintrc.js** ~~~ module.exports = { "env": { "browser": true, "es2021": true, "node": true }, "extends": "eslint:recommended", "parserOptions": { "ecmaVersion": "latest", "sourceType": "module" }, // 0是忽略,1是警告,2是报错 "rules": { // ESLint 规则配置 "quotes": 2, // 非双引号报错 "semi": 1, // 无分号就警告 "no-console": 1, // 有console.log就警告 "space-before-function-paren": 0 // 函数前空格忽略 } } ~~~ 然后我们创建一个 **index.js** ![](https://img.kancloud.cn/0d/c9/0dc97af8d82bd3ad35717f12beb5ab05_1004x757.png) 来测试刚安装的 **ESLint** 的 **npm** 包是否好用,要在终端输入`eslint index.js` , 才会把 **index.js** 文件的错误在终端抛出,而且想要修复错误还要执行 `eslint index.js --fix` 指令,才会把这个文件的错误语法进行修正,下图就是修正后的结果,**注意:下面修正后还是有3个问题,这是因为 ESLint 对于 console.log 是不会帮你移除的,还要就是声明的变量未使用到,同样不会帮你移除,它只会帮你添加分号与替换双引号** ![](https://img.kancloud.cn/01/0e/010ed37db7c6ff8f5b0d4da79d4a11e7_1319x805.png) 像上面这样每次想知道文件中是否错误都要执行一次 **eslint xxx.js 指令** ,很麻烦的,如果我们想一边写代码时候就一边发现错误,就及时更改,我们就需要安装 **vscode** 的 **ESLint** 插件 ![](https://img.kancloud.cn/67/f6/67f63fef906d7adf599d19dc863495a4_967x251.png) 安装完成 **ESLint** 插件后,我们就会发现 **鼠标指向代码时就能看到了警告与错误提示** ,那么我们怎么做到保存时自动修正代码呢,我们需要 **把下面的配置项复制到 **settings.json** 中** ~~~ // 复制到 settings.json 中 "editor.formatOnType": true, // 控制编辑器在键入一行后是否自动格式化该行 "editor.formatOnSave": true, // 在保存时格式化文档 "eslint.codeAction.showDocumentation": { "enable": true }, "editor.codeActionsOnSave": { "source.fixAll.eslint": true, }, "eslint.validate": [ // 检测语言 "javascript", "javascriptreact", "html", "vue", "typescript", "typescriptreact", "markdown" ], ~~~ 这样我们 **在保存时就会自动为我们把错误修正了** >[success] ### Prettier 插件安装 上面的 **ESLint** 都帮我们做了 **代码的格式校验以及代码的修正** ,那我们为什么还要用 **Prettier** 呢,仔细点查看我们会发现,它只是做了 **代码修正** ,并没有给我们的代码格式化,如下图,我们可以看到这代码前面还 **有很多的空格,看着很不规范** ![](https://img.kancloud.cn/7e/e6/7ee6f2d3c775e0d55b75f8d5c47cfc28_510x235.png) 所以需要安装 **Prettier** 的 **npm 包** 来为我们 **格式化代码** ~~~ // 局部安装 npm i prettier -D ~~~ **Prettier** 并不会像 **ESlint** 一样为我们生成一个 **ESlint** 的文件,需要我们自己手动创建一个 **.prettierrc.js 或者 .prettierrc 文件** ,这 **两个文件的区别: .prettierrc.js 会使用 js 的模块化导出来导出配置,.prettierrc 是以 JSON 格式来直接进行写配置**,我们这里用的是第一种,文件内容如下: **.prettierrc.js** ~~~ //.prettierrc.js文件(如果是.prettierrc文件,则是json类型,要按json格式来配置) module.exports = { semi: false, // 代码结尾是否要分号 singleQuote: true, // 字符串用单引号包裹 trailingComma: 'none' // 代码是否尾随逗号 } ~~~ 然后我们在终端输入 `npx prettier --write index.js` 就会把我们的 **index.js** 文件进行格式化了,代码也对其了,如图: ![](https://img.kancloud.cn/7d/8e/7d8e0baa6635987ca12ecb0fe4fa8468_939x576.png) 这里 **需要注意:ESLint 有一个局限性,它执行 eslint index.js --fix 只能处理 js 文件,处理不了其他格式的文件,例如html css 文件,但是 prettier 就能处理其他类型的文件** 。然后还有一个问题就是不够直观,还是要每次都输入 `npx prettier --write index.js` 指令才能把代码格式化,我们希望每次 **保存代码时就直接自动格式化代码** ,这时就用到了我们 **vscode** 中的 **prettier** 插件,安装完成 **prettier** 插件后,我们 **在需要格式化的文件中鼠标右键选择 【格式化文档】,然后选择下图这个即可** ![](https://img.kancloud.cn/fd/70/fd7006b72474e3cca645d046cd241ef1_964x145.png) >[success] ### 编辑器规则 我们的 **prettier** 的规则,不单单可以在 **.prettierrc.js 或 .prettierrc** 中配置,也可以在我们的 **vscode** 中进行配置规则, 如图: ![](https://img.kancloud.cn/e8/52/e852caed1445db610cad751e0d34781f_1204x933.png) **prettier** 先会去项目文件中找是否有 **.prettierrc.js 或 .prettierrc** 的文件,如果有就使用 **.prettierrc.js 或 .prettierrc** 文件中的格式化规则,如果没有就使用 **settings.json** 的规则。 >[success] ### 规则冲突问题 [ESLint 和 Prettier 配合使用时规则冲突如何解决](https://blog.csdn.net/xs20691718/article/details/122727900#:~:text=prettier%20%E5%AE%98%E6%96%B9%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%80%E4%B8%AA%20ESLint%20%E6%8F%92%E4%BB%B6%20eslint-plugin-prettier%20%E3%80%82%20%E8%BF%99%E4%B8%AA%E6%8F%92%E4%BB%B6%E7%9A%84%E4%B8%BB%E8%A6%81%E4%BD%9C%E7%94%A8%E5%B0%B1%E6%98%AF%E5%B0%86%20prettier,%E7%9A%84%E8%A7%84%E5%88%99%E6%9D%A5%E4%BD%BF%E7%94%A8%EF%BC%8C%E7%9B%B8%E5%BD%93%E4%BA%8E%E4%BB%A3%E7%A0%81%E4%B8%8D%E7%AC%A6%E5%90%88%20Prettier%20%E7%9A%84%E6%A0%87%E5%87%86%E6%97%B6%EF%BC%8C%E4%BC%9A%E6%8A%A5%E4%B8%80%E4%B8%AA%20ESLint%20%E9%94%99%E8%AF%AF%EF%BC%8C%E5%90%8C%E6%97%B6%E4%B9%9F%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%20eslint%20--fix%20%E6%9D%A5%E8%BF%9B%E8%A1%8C%E6%A0%BC%E5%BC%8F%E5%8C%96%E3%80%82) 会出现一种情况,例如:**ESLint 的约束条件是必须单引号否则报错,但是 prettier 的规则却是把单引号替换成双引号,这样就引起了报错** ,所以一定要把这 2 个规则达成统一性 >[success] ## 使用指令检查项目全部文件 只需要在 **package.json** 中添加一条指令,如图: ![](https://img.kancloud.cn/81/c6/81c6c528772819f3b1dc88c1ffb1cc07_917x590.png) **eslint .** 代表 **package.json** 所在的当前目录的所有文件,然后执行如下指令进行全部文件的l类型检测: ~~~ npm run lint ~~~ 检测结果: ![](https://img.kancloud.cn/eb/29/eb298bce47387295421685d5f7129e16_1004x354.png) >[success] ## 忽略校验文件 如果有的文件或者目录不想被`eslint`校验,那么可以在项目里添加`.eslintignore`文件,那么**在vscode中进行保存 或 进行一键格式化代码时, 该文件或者目录下的文件不会被校验和改动。** ~~~ build/*.js src/assets public dist ~~~ >[success] # VScode插件篇 1. **Auto Rename Tag** 可以在修改标签时候闭合标签与开始的标签同步修改名称 2. **Tokyo Night** 代码主题颜色,第二个主题好看 3. **vscodeicons** 文件图标主题 4. **Live Server** 可以在写html文件时候也可以热更新实时更新显示页面效果 只需要在html页面单击右键点击即可 ![](https://img.kancloud.cn/ba/7f/ba7fd1f8b025b3ef9655890953200149_957x807.png) 5. **px to rem & rpx & vw** 这个插件可以自动将px转换成rem不用自己来计算 6. **Easy LESS** 可以创建.less 然后保存后自动生成然后保存时自动转换成css ![](https://img.kancloud.cn/ac/6e/ac6ea6c462231174757dd2601efb7bee_1438x470.png) 生成后 ![](https://img.kancloud.cn/88/cb/88cb17ef97771d91caedb759ace7693f_702x316.png) 7. **Image preview** 可以在写img标签时候看到图片地址是否真实有效,如果有效在侧边会有一个小图片 8. **HTML CSS Support** 写html时候在写class时候有class的提示 9. **CSS Peek** 在标签上的class上按住ctrl,如果杠安装完成需要重新打开vscode 10. **Trailing Spaces** 这个插件用在项目打包时候eslint可能会因为多出空格报错,然后这个插件可以去除多余的空格,下载后哪里有多余的空格就会标红 11. **background** 可以给编辑器加背景图,但不是很推荐,据说有bug 12. **Power Mode** 可以增加打代码的特效 去设置中把配置勾选上 ![](https://img.kancloud.cn/4d/b6/4db6a4948ac7e11eb61d16af8e7c5c5b_1416x889.png) 这个改为0 不然会代码左右横挑 ![](https://img.kancloud.cn/d2/64/d264d0a7d2adc13901b07fa718825324_1093x820.png) 13. **GitLens — Git supercharged** 可以在代码右侧看到代码是谁提交的 14. **Import Cost** 可以看到引入的包的大小,没啥太大用 15. **Code Runner** 可以运行js打印结果 16. **WakaTime** 可以统计每天写代码用了多长时间