代码提交流程
husky
提供git钩子, 用于拦截并校验提交
- 安装依赖
yarn add -D husky
- 新增配置文件
// .huskyrc
{
"hooks": {
}
}
lint-staged和prettier
用于提交代码时, 自动格式化项目代码
react项目
- 安装依赖
yarn add -D lint-staged prettier- 新增配置文件
// .lintstagedrc
{
"src/**/*.{js,jsx,ts,tsx,html,css}": [
"prettier --write",
"git add"
]
}- 在huskyrc中新增钩子
// .huskyrc
{
"hooks": {
"pre-commit": "lint-staged",
}
}vue项目
- 安装依赖
yarn add -D lint-staged prettier- 新增配置文件
// .lintstagedrc
{
"src/**/*.{js,vue}": [
"prettier --write",
"git add"
]
}
// .prettierrc
{
"printWidth": 120,
"singleQuote": true,
"semi": false,
"trailingComma": "none",
"bracketSpacing": true,
"jsxBracketSameLine": true,
"htmlWhitespaceSensitivity": "ignore"
}- 在huskyrc中新增钩子
// .huskyrc
{
"hooks": {
"pre-commit": "lint-staged",
}
}对于现有项目代码进行全局格式化
- 添加script字段
// package.json
"scripts": {
"prettier": "prettier --write src/*"
},- 执行脚本
yarn prettier- 删除script字段, 并检查格式化结果, 一般来说没啥问题, 但注意回归
commitlint
用于校验提交时commit msg信息的格式是否正确
- 详情见Git 提交规范
- 安装依赖
yarn add -D @commitlint/cli @commitlint/config-conventional- 新增配置文件
// commitlint.config.js
/**
* feat:新功能
* fix:修补某功能的bug
* refactor:代码重构(即不是新增功能,也不是修改bug的代码变动)
* optimize: 优化构建工具或运行时性能
* style:代码格式(不影响代码运行的变动,例如缩进,空格)
* docs:仅文档新增/改动
* chore:构建过程或辅助工具的变动
* test: 增加测试
*/
module.exports = {
extends: [
'@commitlint/config-conventional'
],
rules: {
'type-enum': [2, 'always', [
'feat', 'fix', 'refactor', 'optimize', 'style', 'docs', 'chore', 'test'
]],
'type-case': [0],
'type-empty': [0],
'scope-empty': [0],
'scope-case': [0],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never'],
'header-max-length': [0, 'always', 72]
}
};- 在huskyrc中新增钩子
// .huskyrc
{
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}