前言
开发的过程中不同的编辑器,不同的格式化插件对应的代码格式都有差异,这就导致代码风格不一致或是合并冲突。
这里建议不使用开发IDE自带的格式功能,使用ESLint对代码格式进行约束和格式化。
ESLint配置
依赖
package.json
相关依赖
1 | { |
模块作用
1 | // 这里须要全局安装最主要的两个node 模块,主要是要让 ide 编辑器可以读取全局环境来调用这2个模块 |
排除目录
在 .eslintignore
文件中排除那些不需要校验的文件和目录,减少 ESLint 扫描的范围。
.eslintignore
文件
1 | node_modules |
以上配置会让 ESLint 跳过这些目录下的文件校验。
规则配置
方式1
项目根目录中添加.eslintrc.js
该配置文件修改时,项目重新运行时才会生效。
项目根目录添加.eslintrc.js
1 | module.exports = { |
规则
0
: 关闭规则。1
: 打开规则,并且作为一个警告,字体颜色为黄色(并不会导致检查不通过)。2
:打开规则,并且作为一个错误 ,色体颜色为红色(退出码为1,检查不通过)。
其中
一般使用@babel/eslint-parser
作为parser,若使用typescript,则一般使用@typescript-eslint/parser
typescript插件@typescript-eslint
1 | // .eslintrc |
就相当于
1 | // .eslintrc |
方式2
当然也可以在 package.json
中配置
1 | { |
但是同时只能配置一处,两处都配置会有问题。
校验太慢
运行的时候卡在这个地方很慢
sealing (finish module graph ESLintWebpackPlugin_1)
有下面三种优化的方式
- 排除目录文件
- 开启缓存
- 开启多线程
示例
1 | const ESLintPlugin = require("eslint-webpack-plugin"); |
exclude
和 .eslintignore
生效策略
优先级:
当
exclude
选项和.eslintignore
文件的规则有冲突时,两者都会生效,即同时排除exclude
选项和.eslintignore
文件中指定的文件和目录。互补关系:
exclude
选项主要用于 Webpack 构建过程中的排除,而.eslintignore
文件则用于全局的排除,两者可以结合使用,以满足不同的需求。
IDE自动修复
IDEA
下面的两种方式都有这么一个问题
执行的时候相当于执行Save
的同时执行eslint --fix
。
这就没办法保证两者的先后,Save的时候会进行代码校验,如果Save先结束就会导致后来执行eslint --fix
的代码已经符合规范了,但是依旧会报错。
建议关闭保存时的lint校验 lintOnSave: false,
,这是不影响IDEA或者是VSCode保存时的格式化的。
vue.config.js
1 | const { defineConfig } = require("@vue/cli-service"); |
方式1
IDEA的设置中可以勾选如下的操作,这样保存时会自动修复。
方式2
首先点击 Edit
=> Macros
进入录制状态
在我们的代码页面右键点击Fix ESLint Problems
,再点击菜单中的File
=>Save All
进行保存
这里不建议直接点击Ctrl+S
,因为如果之前这个快捷键改了操作,可能会导致死循环。
结束录制 宏名称设置为eslint_fix_save
打开IDEA设置页面,点开keymap
设置页,搜索eslint_fix_save
设置快捷键为Alt+S
,这样我们就可以按Alt+S
进行格式化并且保存了。
注意:
这里快捷键是可以设置为
Ctrl+S
的,因为宏中记录的不是快捷键而是快捷键对应的操作。
VSCode
先把自带的格式化取消掉,否则两个会冲突。
在 VSCode 中,默认 ESLint 并不能识别 .vue
、.ts
或 .tsx
文件,需要在「文件 => 首选项 => 设置」里做如下配置:
1 | { |
保存时自动修复 ESLint 错误
如果想要开启「保存时自动修复」的功能,你需要配置 .vscode/settings.json
:
1 | { |
VSCode 的一个最佳实践就是通过配置 .vscode/settings.json
来支持自动修复 Prettier 和 ESLint 错误:
1 | { |
编辑器格式
编辑器的格式配置
这种方式只能简单的约束 使用ESLint和其对应的格式化工具可以不配置这个。
在项目根目录下新建文件.editorconfig
文件
1 | # http://editorconfig.org |
ESLint 校验
vue.config.js
1 | module.exports = defineConfig({ |
这里的 lintOnSave
选项有几个不同的值:
false
:不进行 ESLint 校验。true
:在开发和生产环境下都会在保存文件时进行 ESLint 校验,并且会将警告和错误输出到控制台,但不会阻止打包。'warning'
:与true
类似,不过只会将警告信息输出到控制台。'error'
:在保存文件和打包时都会进行 ESLint 校验,并且一旦有警告或错误就会阻止打包。
lintOnSave
有不同的配置值,不同值的触发情况和表现有所不同:
true
:保存文件时会触发 ESLint 校验,并且会在控制台输出校验警告和错误信息,但不会阻止文件保存和代码继续运行。false
:关闭保存文件时的 ESLint 校验,无论何时保存文件都不会触发校验。'error'
:保存文件时触发 ESLint 校验,当出现任何 ESLint 错误时,会将这些错误视为编译错误,阻止代码编译和文件保存。这种配置可以强制开发者在保存代码时修复所有 ESLint 错误,保证代码质量。
项目修复
在项目根目录下,你可以通过命令行运行 ESLint 并带上 --fix
选项,ESLint 就会自动尝试修复那些它能够处理的格式问题。
基础命令
如果你已经全局安装了 ESLint,可以直接使用以下命令:
1 | eslint --fix src |
这里的 src
代表要检查和修复的目录,你可以依据项目实际情况替换成其他目录,例如 src/components
、src/pages
等。
若要对整个项目进行检查和修复,可使用 .
来表示当前目录:
1 | eslint --fix . |
配置脚本
在 package.json
中配置脚本
为了方便使用,你可以在 package.json
的 scripts
字段里添加一个脚本:
1 | { |
之后在命令行中运行以下命令即可完成修复操作:
1 | npm run lint:fix |