背景
背景:公司为了规范开发,对目前现有的所有项目的提交格式进行了规范。 git代码检测主要用到commitlint和husky
commit规范介绍:
- feat: 新功能、新特性
- fix: 修改 bug
- perf: 更改代码,以提高性能(在不影响代码内部行为的前提下,对程序性能进行优化)
- refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修改)
- docs: 文档修改
- style: 代码格式修改, 注意不是 css 修改(例如分号修改)
- test: 测试用例新增、修改
- build: 影响项目构建或依赖项修改
- revert: 恢复上一次提交
- ci: 持续集成相关文件修改
- chore: 其他修改(不在上述类型中的修改)
- release: 发布新版本
- workflow: 工作流相关文件修改
commit格式
commit提交格式feat: 新功能
<type>: <subject>
注意冒号为英文字符冒号,且冒号后面有空格
commit的配置
- 安装
npm install -g @commitlint/cli @commitlint/config-conventional
-
生成配置文件 这个文件在根目录下生成就可以了 echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
-
commitlint.config.js中制定提交规范
module.exports = { extends: ['@commitlint/config-conventional'] }
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', [
'feat', 'fix', 'perf', 'refactor', 'docs', 'style', 'test', 'build', 'revert', 'ci', 'chore', 'release', 'workflow'
]],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never']
}
};
husky
husky继承了Git下所有的钩子,在触发钩子的时候,husky可以阻止不合法的commit,push等等。注意使用husky之前,必须先将代码放到git 仓库中,否则本地没有.git文件,就没有地方去继承钩子了。
- 安装
npm install husky --save-dev
- 配置package.json
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
"lint-staged": {
"src/**/*.{js,vue}": [
"eslint",
"git add"
]
}
遇到的问题
- 校验如果没有生效,可能是因为husky版本过高,建议用3.1.0,再重新npm i
代码里没有lint-staged,复制的之后复制了过来,要去掉husky里配置的 “pre-commit”: “lint-staged”,才正常生效。- 还有可能是因为commitlint.config.js重新选择编码格式为UTF-8
总结
- 复制的husky很容易不了解自己的项目,造成一些错误,找不到原因。
- 多人协作开发时commit新增校验确实会有些帮助。
|