Husky
- .husky/pre-commit:git 提交之前触发的钩子
- .husky/commit-msg:git 提交信息写入后触发的钩子
# 安装 Husky
pnpm add -D husky
# 初始化 Husky (自动在 .husky/ 中创建 pre-commit 脚本,并更新 package.json 中的 prepare 脚本)
pnpm exec husky init
lint-staged
# 安装 lint-staged
pnpm add -D lint-staged
创建:lint-staged.config.js
export default {
// 针对 JSON 和 Markdown 文件
'*.{json,md}': ['prettier --write'],
// 针对 JavaScript 和 TypeScript 文件
'*.{js,ts}': ['eslint --fix', 'prettier --write'],
// 针对 CSS 和 SCSS 文件
'*.{css,scss}': ['stylelint --fix', 'prettier --write'],
// 针对 Vue 和 HTML 文件
'*.{vue,html}': ['stylelint --fix', 'eslint --fix', 'prettier --write'],
};
配置:.husky/pre-commit
npx lint-staged
commitlint
# 安装 commitlint
pnpm add -D @commitlint/cli @commitlint/config-conventional
创建:commitlint.config.js
export default {
// 继承的规则集
extends: ['@commitlint/config-conventional'],
/* 规则配置 0 禁用 1 警告 2 错误 always 总是应用此规则 never 从不应用此规则 */
rules: {
// 提交类型枚举,git 提交 type 必须是以下类型
'type-enum': [
2,
'always',
[
// 初始化提交
'init',
// 适用于构建系统或外部依赖的更改
'build',
// 用于日常维护或其他不涉及代码功能的更改
'chore',
// 持续集成(CI)相关的更改
'ci',
// 文档相关的更改
'docs',
// 新增功能
'feat',
// 修复 Bug
'fix',
// 性能优化
'perf',
// 代码重构
'refactor',
// 回滚提交,用于恢复先前的某次提交
'revert',
// 代码风格相关的更改
'style',
// 测试相关的更改
'test',
],
],
// 提交消息必须有 `type`
'type-empty': [2, 'never'],
// 关闭 scope 大小写强制
'scope-case': [0],
// `scope` 不能为空
'scope-empty': [2, 'never'],
// `subject` 不能为空
'subject-empty': [2, 'never'],
// 不强制 `subject` 的大小写
'subject-case': [0],
// `subject` 不得超过 50 个字符
'subject-max-length': [2, 'always', 50],
},
};
创建:.husky/commit-msg
npx commitlint --edit "$1"
结合上一篇文章,这篇文章根据上一篇文章的配置进行代码提交时进行代码格式化以及提交信息的校验。
老规矩哦!!!