在前端工程的团队协作中,随着代码内容不断增多、协作人员日益增加,代码规范愈发必不可少。规范的代码不仅能提升代码的可读性与可维护性,还能极大地提高团队协作效率。当下,常用的规范技术栈选择为 ESLint 和 Prettier,它们二者在保障代码质量、统一代码风格方面发挥着重要作用。
1. 认识ESLint和Prettier
简而言之,Prettier专注于代码格式化,而ESLint除了代码格式规范外,还能用于代码质量检查,比如:提示未使用的变量、函数等。
另外,ESLint拥有大量的规则,涵盖了语法错误检查、代码风格约束和代码质量控制等多个方面。规则可以根据项目需求进行精细配置,例如可以规定变量命名的风格(如驼峰命名法、下划线命名法)、函数的最大长度、是否允许使用某些特定的语法等;
Prettier规则相对较少且侧重于代码的格式细节,它的规则是固定的,不允许用户自定义规则的逻辑,用户只能调整一些基本的格式选项,如缩进的空格数、每行代码的最大长度、是否使用分号等。
在Prettier官网中,有这样一句话, use Prettier for formatting and linters for catching bugs!
,ESLint 更像是一个 “代码警察”,重点关注代码的正确性和质量,帮助开发者发现和解决代码中的问题;而 Prettier 则像是一个 “代码美容师”,专注于让代码看起来更加整洁、美观,统一代码的格式风格。
在实际项目中,通常会将两者结合使用,以达到最佳的代码规范效果。
提醒:无论是修改 ESLint 配置,还是调整 Prettier 设置,都务必要重启 IDE。否则,这些修改有时无法生效,会让你误以为是自己配置出错了!
2. 安装ESLint
2.1. 安装
1 | npm init @eslint/config@latest |
运行命令后,系统会提出以下问题,随后创建文件eslint.config.js
。
1 | npm init @eslint/config@latest |
该过程增加依赖有:
1 | "@eslint/js": "^9.21.0", |
2.2. 配置文件eslint.config.js
文件内容:
1 | import globals from "globals"; |
2.3. 配置脚本
在package.json
文件的scripts
中增加:
1 | "scripts": { |
其中,
eslint
这是命令的主体,代表要调用 ESLint 工具;--ext
是 ESLint 的一个命令行选项,其全称为 –extentions,用于指定 ESLint 要检查的文件扩展名;.js,.vue
指定了 ESLint 要检查的文件扩展名;src
指定要检查的文件或目录路径;eslint --ext .js,.vue src
命令的作用是让 ESLint 检查 src 目录下所有扩展名为 .js 和 .vue 的文件,根据 ESLint 的配置规则对这些文件中的代码进行分析,并报告不符合规则的代码问题;
2.4. 执行脚本
在终端执行脚本:
1 | npm run lint |
报告内容:
1 | XXX\ase.js |
运行此脚本,便能轻松定位我们所写代码的具体问题所在。
2.5. 忽略某些文件检查
1 | { |
该配置可以在执行脚本时忽略配置的文件。
3. 安装Prettier
3.1. 安装
1 | npm install --save-dev --save-exact prettier |
3.2. 配置文件
配置文件支持多种形式,详细内容见配置文件-官网。
创建配置文件prettier.config.mjs
1 | const config = { |
3.3. 配置脚本
在package.json
文件的scripts
中增加:
1 | "scripts": { |
prettier
要调用的工具名称;--write
Prettier 的一个命令行选项,其作用是让 Prettier 把格式化后的代码直接写回到原文件中;"**/*.{js,vue}"
一个文件路径模式,用于指定 Prettier 要处理哪些文件;**/
表示递归匹配项目中的所有目录,不管目录层级有多深;*.{js,vue}
表示匹配所有扩展名为 .js 或者 .vue 的文件;
3.4. 执行脚本
在终端执行脚本:
1 | npm run prettier |
格式化所有有问题的文件
3.5. 忽略某些文件检查
忽略文件-官网
创建文件.prettierignore
,在文件中增加忽略的文件路径
1 | src/utils/noimportant/* |
4. ESLint与Prettier集成
ESLint与Prettier集成时会有规则上的冲突,为了解决冲突,可以配置eslint-config-prettier
,这个插件的主要作用就是关闭 ESLint 中所有不必要的或者可能与 Prettier 冲突的规则。它提供了一个 ESLint 配置,当你将其集成到 ESLint 的配置中时,会自动禁用那些与 Prettier 格式化规则冲突的 ESLint 规则,从而让 ESLint 和 Prettier 能够和谐共处。
4.1. 安装eslint-config-prettier
1 | npm i -D eslint-config-prettier |
4.2. 配置eslint-config-prettier
在 ESLint 的配置文件中,将 eslint-config-prettier 添加到 extends 数组中,通常将其放在数组的最后一项,以确保它能覆盖其他可能冲突的规则。
1 | import someConfig from "some-other-config-you-use"; |
4.3. 安装eslint-plugin-prettier
为了进一步增强 ESLint 和 Prettier 的集成,通常还会搭配使用 eslint-plugin-prettier。eslint-plugin-prettier 会将 Prettier 的格式化结果作为 ESLint 的规则来运行,这样在使用 ESLint 检查代码时,也会检查代码是否符合 Prettier 的格式化规则,并且可以使用 ESLint 的 –fix 选项来自动修复不符合 Prettier 规则的代码。
1 | npm install --save-dev eslint-plugin-prettier |
4.4. 配置eslint-plugin-prettier
1 | import globals from 'globals' |
5. VSCode集成
在插件库安装插件: ESLint 和 Prettier - Code formatter
可以通过在文件右键选择【格式化文档】进行单个文件的格式化;