【从零到一手撕脚手架 | 第三节】项目集成CommitLInt+ESLint+Prettier+StyleLint+LintStaged
【从零到一手撕脚手架 | 第三节】项目集成CommitLInt+ESLint+Prettier+StyleLint+LintStaged
Hello大家好我是⛄,前两节教大家如何初始化一个脚手架项目以及如何封装Vue技术栈常用的工具库。本小节教大家如何向我们的脚手架中配置ESLint、Prettier、StyleLint、LintStage。帮助大家规范项目代码,能够更好的进行团队协作开发。
项目地址:
- GitHub:LonelySnowman/sv3-template
- 官方文档:SV3-Family | Vue3
- 前置知识:Vue全家桶,了解Vite或WebPack等构建工具,Node.js
- 您将收获到:从零到一构建一个规范的 Vue3+TS+Vite 脚手架
配置 ESLint
ESLint 是一个用来识别 ECMAScript 并且按照规则给出报告的代码检测工具,使用它可以避免低级错误和统一代码的风格。它拥有以下功能:
- 查出 JavaScript 代码语法问题。
- 根据配置的规则,标记不符合规范的代码。
- 自动修复一些结构、风格问题。
防止代码成为shi山😀,可以帮我们检查有没有死循环,有没有定义但未使用的变量等等。
安装依赖
1 | pnpm install -D eslint @eslint/create-config |
- @eslint/create-config:eslint配置文件初始化工具
生成配置文件
1 | # 生成 ESLint 配置文件模板 |
1 | # 出现如下选择 |
- 熟悉之后我们就可以不使用配置生成工具
- 直接新建配置文件进行配置即可
- ESLint配置文件名称可以为:
.eslintrc.js
、.eslint.config.js
(根据个人习惯选择即可)
这里是我常用的配置规则,更多配置规则请查阅ESLint中文。
单独的语法配置需要在rules中编写,全部配置请参考:List of available rules - ESLint中文
1 | module.exports = { |
- 配置完规则后我们配置一条指令用于代码质量的修复
1 | // package.json |
我们还可以配置忽略文件,让 ESLint 不对这些文件进行校验。
新建 .eslintignore
进行配置。
1 | node_modules |
自动修复
- 大部分IDE支持在修改代码后进行自动修复
- WebStorme:直接在Setting中搜索ESLint即可进行配置
- VSCode:需要在项目目录下加入如下配置文件,还需要下载ESLint插件
/.vscode/settings.json
1 | { |
配置 Prettier
- 多人协作的项目开发中,保持统一的代码风格是一件很重要的事。
- Prettier就可以帮我们做到这个事情,但是ESLint不是也能规范代码风格么?可以是可以,但是相比Prettier差了很多,术业有专攻,Prettier可以让我们拥有超级整齐的代码。可以帮助我们配置是否使用分号,缩进的格式等等。
- 官方文档:Prettier 中文网 · Prettier 是一个“有态度”的代码格式化工具
安装依赖
1 | pnpm install -D prettier |
添加配置文件
- Prettier配置文件名称可以为:
.ptettierrc.js
、.ptettier.config.js
(根据个人习惯选择即可) - 下面是我常用的一些配置,更多配置规则大家可以前官网查看:Options · Prettier 中文网
1 | module.exports = { |
- 配置一个指令便于我们使用prettier进行修复代码风格
1 | { |
解决ESLint与Prettier冲突问题
安装依赖
1 | pnpm install -D eslint-config-prettier eslint-plugin-prettier |
- eslint-config-prettier 的作用是关闭eslint中与prettier相互冲突的规则。
- eslint-plugin-prettier 的作用是赋予eslint用prettier格式化代码的能力。 安装依赖并修改.eslintrc文件。
配置ESLint
1 | // 此配置在eslint配置文件中新增 |
配置完成之后我们对代码风格的配置只会使用prettier的配置,相当于将eslint中冲突的规则覆盖掉了。
我们还可以配置忽略文件,让 Prettier 不对这些文件进行校验。
新建 .prettierignore
进行配置。
1 | /dist/* |
配置 StyleLint
- tylelint 是一个强大、先进的 CSS 代码检查器(linter),可以帮助你规避 CSS 代码中的错误并保持一致的编码风格。
- 你可能会想:WTF😓,怎么有有一个配置编码风格的,不是已经有Prettier了么。StyleLint,是专用于规范样式代码的工具,可以做到一些Prettier做不到的功能,有了它能让我们的样式代码(CSS/Less/Scss)更加美观,比如说对CSS样式代码进行顺序规定。
- 但是 StyleLint 与 Prettier 也有配置冲突,所以我们也要将 StyleLint 中与 Prettier 冲突的配置关闭。
安装依赖
1 | pnpm install -D stylelint stylelint-config-standard |
- stylelint-config-standard:StyleLint 推荐配置
- stylelint-config-prettier:关闭与 prettier 冲突的配置
- stylelint-config-standard-vue:StyleLint Vue 项目推荐配置
- postcss-html postcss-scss:支持检查 scss 与 html
- stylelint-order:支持 css 样式排序
添加配置文件
- Prettier配置文件名称可以为:
.stylelintrc.js
、.stylelint.config.js
(根据个人习惯选择即可) - 更多详细配置规则请查看官方文档:List of rules | Stylelint 中文文档 (bootcss.com)
1 | module.exports = { |
我们还可以配置忽略文件,让 StyleLint 不对这些文件进行校验。
新建 .stylelintignore
进行配置。
1 | /dist/* |
配置 Husky
- 团队协作时,我们会遇到多种问题,最让人难受的就是每个人书写的代码风格不一致😅,使用的规范不一致,导致团队协作效率极低,代码可读性差。
- 这时候就需要 Husky 来帮忙了,它可以帮助我们在代码提交前后进行一些自定义的操作,像是代码风格的校验,并且它支持所有的 Git 钩子(钩子是你可以放在钩子目录中触发的程序 在 Git 执行的某些点执行的操作)。
Git全部钩子的详细介绍:Git - githooks Documentation (git-scm.com)
本文用到的钩子:
- 在
pre-commit
触发时进行代码格式验证,在commit-msg
触发时对 commit 消息和提交用户进行验证。
git hook | 执行时期 | 备注 |
---|---|---|
pre-commit | git commit 执行前 | git commit –no verify 命令可以绕过该钩子 |
commit-msg | git commit 执行前 | git commit –no verify 命令可以绕过该钩子 |
安装依赖
1 | pnpm install -D husky |
然后配置一个初始化 Hysky 的命令
1 | // package.json |
运行这个命令
1 | # 运行后会初始化husky |
运行之后就会出现.husky
文件夹,之后我们就可以配置在GItHook
中执行的操作啦😀。
配置 LintStaged
- 有些同学感觉使用IDE的保存自动修复相当麻烦,我每次改完之后都需要等他修复一下😡,太不方便啦!
- 接下来就要请出我们的好帮手:lint-staged,它可以帮助我们在 git 缓存中进行代码质量与风格的修复,在代码提交前进行统一校验,通过后才可以提交。
安装依赖
1 | pnpm install -D lint-staged |
配置
在 package.json 配置一个指令方便我们使用
1 | { |
使用 husky 配置一个 pre-commit 钩子
1 | # --no-install 代表强制使用本地模块 |
LintStaged 的配置文件方式也有多种:
- 在
package.json
中配置 lint-staged.js
或lint-staged.config.js
.lintstagedrc.json
或.lintstagedrc.yaml
- 等等
这里我们直接在 package.json
中配置
1 | // 我们直接配置在 package.json 中 |
这样就配置完毕啦,当我们使用 git commit -m "xxx"
时,lint-staged 会自动执行帮我们进行代码质量与风格的修复。
配置 CommitLint
- 每次看 Github 仓库的时候,总感觉有些不顺眼。原来是提交附带的信息乱糟糟的,都是”新增xx功能”,”修复xxBUG”,非常的不工整,看着太不舒服啦🤯。
- 不要慌,我们可以使用 CommitLint 对提交的信息进行规范。
- 官方文档:commitlint - Lint commit messages
安装依赖
1 | pnpm install -D @commitlint/cli @commitlint/config-conventional |
- @commitlint/config-conventional:commitlint自定义配置规则插件
配置
规则配置
- CommitLint配置文件名称可以为:
.commitlintrc.js
、.commitlint.config.js
(根据个人习惯选择即可)
配置文件内容如下
- 官方文档的配置规则讲解:Rules (commitlint.js.org)
规则由名称和配置数组组成:
<配置名称>: [<警报级别>, <是否启用>, <规则对应的值>]
- 警报级别
- 0 无提示 disable
- 1 警告 warning
- 2 错误 error
- 是否启用
- always 启用
- never 禁用
- 规则对应的值:查看官方文档进行配置
1 | // 这里是通俗的解释 详情请前往官方文档查阅 |
提交信息的类型一般有如下规范(可根据团队习惯进行更改):
- feat : 增加一个新特性
- fix : 修复一个 bug
- perf : 更改代码以提高性能
- build : 更改构建系统和外部依赖项(如将 gulp 改为 webpack,更新某个 npm 包)
- ci : 对 CI 配置文件和脚本的更改
- docs : 仅仅修改文档说明
- refactor : 代码重构时使用
- style : 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
- test : 增加新的测试功能或更改原有的测试模块
钩子配置
1 | # 配置 commit-msg 钩子 运行 commitlint |
配置完成后我们就可以在git commit
时进行信息的规范
我们需要按照以下格式进行提交:
1 | # git commit -m "类型: 信息" |
结语
终于配置完啦,用到的依赖实在是太多啦😭,配置的头都大了,希望日后能有一个库能集成它们的所有功能,这样就会方便的不止一点,待我日后成长起来,如果没人去搞⛏,我可以尝试一下(胡言乱语)。
系列文章:
- 【从零到一手撕脚手架 | 第一节】配置基础项目结构 Vite + TypeScrpit + Vue3 初始化项目
- 【从零到一手撕脚手架 | 第二节】模块化封装 降低耦合度 封装 axios pinia router
- 【从零到一手撕脚手架 | 第三节】项目集成CommitLInt+ESLint+Prettier+StyleLint+LintStaged
- 【从零到一手撕脚手架 | 第四节】加速开发效率 使用plop生成开发模板 使用mock进行数据模拟
- 【从零到一手撕脚手架 | 第五节】自定义命令行下载cli工具
参考学习项目:
如果有任何不正确的地方请指正,我会及时更改。
更文不易,如果对你有帮助的话,请给我点个赞吧👍
关注我,后续文章不迷路⛄