代码提交流程

husky

提供git钩子, 用于拦截并校验提交

  1. 安装依赖
yarn add -D husky
  1. 新增配置文件
// .huskyrc
{
  "hooks": {
  }
}

lint-staged和prettier

用于提交代码时, 自动格式化项目代码

react项目

  1. 安装依赖
yarn add -D lint-staged prettier
  1. 新增配置文件
// .lintstagedrc
{
    "src/**/*.{js,jsx,ts,tsx,html,css}": [
        "prettier --write",
        "git add"
    ]
}
  1. 在huskyrc中新增钩子
// .huskyrc
{
  "hooks": {
    "pre-commit": "lint-staged",
  }
}

vue项目

  1. 安装依赖
yarn add -D lint-staged prettier
  1. 新增配置文件
// .lintstagedrc
{
    "src/**/*.{js,vue}": [
        "prettier --write",
        "git add"
    ]
}
// .prettierrc
{
    "printWidth": 120,
    "singleQuote": true,
    "semi": false,
    "trailingComma": "none",
    "bracketSpacing": true,
    "jsxBracketSameLine": true,
    "htmlWhitespaceSensitivity": "ignore"
}
  1. 在huskyrc中新增钩子
// .huskyrc
{
  "hooks": {
    "pre-commit": "lint-staged",
  }
}

对于现有项目代码进行全局格式化

  1. 添加script字段
// package.json
 "scripts": {
  	"prettier": "prettier --write src/*"
  },
  1. 执行脚本
yarn prettier
  1. 删除script字段, 并检查格式化结果, 一般来说没啥问题, 但注意回归

commitlint

用于校验提交时commit msg信息的格式是否正确

  1. 安装依赖
yarn add -D @commitlint/cli @commitlint/config-conventional
  1. 新增配置文件
// 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]
	}
};
  1. 在huskyrc中新增钩子
// .huskyrc
{
  "hooks": {
    "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
  }
}