(三)vite 项目配置:代码提交检查

489 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情

2.4 代码提交检查

在团队协作开发时,每个人提交代码时都会写 commit message,但如果没有规范,每个人都会有自己的书写风格,因此在翻看 git log 时经常看到的是五花八门,十分不利于阅读和维护。

做一些配置来约束团队成员在写提交信息时规范统一。

需要用的开发依赖:

  1. husky
  2. lint-staged
  3. commitlint
  4. commitizen

2.4.1 安装 husky

husky 这个工具用于配置 git 文件提交时触发的钩子

pnpm install husky --save-dev

几个常用的钩子:

  1. pre-commit 描述: 通过钩子函数,判断提交的代码是否符合规范
  2. commit-msg 描述: 通过钩子函数,判断 commit 信息是否符合规范
  3. pre-push 描述: 通过钩子,执行测试,避免对以前的内容造成影响

2.4.2 lint-staged

对暂存的 git 文件运行测试器, 在执行 git add 命令时会按照我们配置的代码风格格式化代码

pnpm install --save-dev lint-staged

package.json文件中添加如下代码:

{
  "name": "project name",
  "version": "1.1.0",
​
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": [
      "prettier --write--parser json"
    ],
    "package.json": [
      "prettier --write"
    ],
    "*.vue": [
      "eslint --fix",
      "prettier --write",
      "stylelint --fix"
    ],
    "*.{scss,less,styl,html}": [
      "stylelint --fix",
      "prettier --write"
    ],
    "*.md": [
      "prettier --write"
    ]
  }
}

在package.json中添加脚本

npm set-script prepare "husky install" 

初始化husky ( 将 git hooks 钩子交由 husky 执行), 在终端中执行命令:

npm run prepare 
  • 添加Hook:pre-commit

    每次提交都会执行代码检查(lint-staged),检查规则以及格式化规则在package.json中的lint-staged 配置项中

    npx husky add .husky/pre-commit "npx lint-staged"
    
  • 安装提交信息校验依赖

    pnpm install --save-dev @commitlint/cli @commitlint/config-conventional
    
  • 添加Git Hook:commit-msg

    npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'
    

2.4.3 conventional-changelog-cli 与 commitizen

从git元生成一个变更日志

pnpm install --save-dev conventional-changelog-cli
​
# package.json 的 script 中添加命令
"log": "conventional-changelog -p angular -i CHANGELOG.md -s",

执行 npm run log 生成日志文件CHANGELOG.md.

commitizen 的作用将会体现在你提交代码时提供给你选项

2.4.4 效果

暂存文件,提交代码,然后钩子就会检查我们的代码了。

PS D:\TLProjects\xxx-studio\code\xxx-manage-vue> git add .
PS D:\TLProjects\xxx-studio\code\xxx-manage-vue> git commit -m "审批按钮添加loading"

> xxx-vue@0.0.4 lint:lint-staged D:\TLProjects\xxx-studio\code\xxx-manage-vue
> lint-staged

[STARTED] Preparing lint-staged...
[SUCCESS] Preparing lint-staged...
[STARTED] Running tasks for staged files...
[STARTED] package.json — 2 files
[STARTED] *.{js,jsx,ts,tsx} — 0 file
[STARTED] {!(package)*.json,*.code-snippets,.!(browserslist)*rc} — 0 file
[STARTED] package.json — 0 file
[STARTED] *.vue — 2 files
[STARTED] *.{scss,less,styl,html} — 0 file
[STARTED] *.md — 0 file
[SKIPPED] *.{js,jsx,ts,tsx} — no files
[SKIPPED] {!(package)*.json,*.code-snippets,.!(browserslist)*rc} — no files
[SKIPPED] package.json — no files
[SKIPPED] *.{scss,less,styl,html} — no files
[SKIPPED] *.md — no files
[STARTED] eslint --fix
[SUCCESS] eslint --fix
[STARTED] prettier --write
[SUCCESS] prettier --write
[STARTED] stylelint --fix
[SUCCESS] stylelint --fix
[SUCCESS] *.vue — 2 files
[SUCCESS] package.json — 2 files
[SUCCESS] Running tasks for staged files...
[STARTED] Applying modifications from tasks...
[SUCCESS] Applying modifications from tasks...
[STARTED] Cleaning up temporary files...
[SUCCESS] Cleaning up temporary files...
⧗   input: 审批按钮添加loading
✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]

✖   found 2 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint

husky - commit-msg hook exited with code 1 (error)

可以看到这里报错了,2个问题,提交的主题,以及类型不能为空,更改提交信息为:

git commit -m "feat:审批按钮添加loading"

可以看到提交成功了:

image.png