git 相关 hook 阶段对代码进行规范性检测以及自动化功能
npm install @kyfe/kye-crm-gitlintpre-commit hook、pre-push hook 中执行。
npm install @kyfe/kye-crm-gitlint
`
$3
> pre-commit hook 中针对本次变更代码进行一些规范检测
框架已在项目内的 pre-commit hook 中集成了 eslint 校验,我们只需将自定义检测规则添加进去,进入文件 base/packages/lint-staged/index.js 引入并调用即可。
`
const GITLint = require('@kyfe/kye-crm-gitlint')
...
// 要放在代码最后调用,先进行 eslint 检测,通过后再进行自定义校验
GITLint.start()
`
$3
> pre-push hook 中针对相同 commit message 进行自动合并
此功能无需单独引用,GITLint 安装时会自动在项目的子仓库中创建 git pre-push hook 文件并进行引用。
配置
运行 npm install @kyfe/kye-crm-gitlint 成功后,项目根目录下将会生成一个 .gitlintrc 文件,在其中会有一些规则配置如下:
`
{
root: true,
extend: {
commit: {
xxx: require('./xxx.js')
}
},
rules: {
commit: {
'auth': 'error',
'css': 'error',
'complexity': 'error',
},
push: {
'auto-merge-commit': 1
}
}
}
`
$3
| 字段 | 字段说明 | 类型 |
| -------- | -------- | ------ |
| root | 整个功能的开启或关闭 | string、boolean |
| extend | 自定扩展功能 | object |
| rules | 错误级别以及开启、关闭 | object |
extend 内可以自定义各种检测功能,GITLint 会提供对应的解析函数已经其他内部方法辅助,配置规则:
1. 项目内任意位置内建新文件处理自定义检测,并在入口文件导出方法,module.exports = checkFun。
2. .gitlintrc 文件内 extend 中对应 hook 下引入,checkFun: require('../xx.js')。
3. GITLint 会在对应 hook 中会拉取配置文件,注册对应事件。
rules 内对各功能可自定义错误级别以及开启、关闭规则:
* error:强校验,规则不通过拒绝执行下一步;
* warning:警告,规则不通过仅提示,不阻止执行一下;
* 1:规则开启;
* 0:规则关闭;
$3
#### rules.commit.auth
> 按钮权限检测,kye-button、el-button、query-table 中按钮是否有配置 auth 字段。示例如下
触发校验
`
新增
新增
// query-table tools
{
label: '新增',
icon: 'plus',
func: () => {}
}
{
label: '新增',
icon: 'plus',
auth: '',
func: () => {}
}
`
不触发校验
`
// 无需权限按钮可添加 git_ignore_auth 属性进行豁免
新增
新增
// query-table tools
{
label: '新增',
icon: 'plus',
git_ignore_auth: true,
func: () => {}
}
{
label: '新增',
icon: 'plus',
auth: 'BTo2Q1kDyEVJ',
func: () => {}
}
`
#### rules.commit.css
> css 规范检测,根元素 class 命名、style 标签编写规范等(同框架内 css 检测规则)。示例如下:
触发校验
`
`
不触发校验
`
`
#### rules.commot.complexity
<<<<<<< HEAD
> 单文件代码认知复杂度检测,检测本次提交代码中单文件复杂度是否超过设置的阈值,暂时内置最大为 150;
$3
> pre-push hook 中针对 commit 记录自动合并功能
#### rules.push.auto-merge-commit
=======
单文件代码认知复杂度检测,检测本次提交代码中单文件复杂度是否超过设置的阈值,暂时内置最大为 150;
$3
> pre-push hook 中针对 commit 记录自动合并功能
push 代码时会自动检测相同的 commit message,将相同的记录自动合并成一个再 push。事例如下:
合并前
合并后
常见问题
$3
1.npm ERR! network request to https://registry.npmjs.org xxx failed, reason: connect ETIMEDOUT xxxx
切换 npm 镜像
`
npm config set registry https://registry.npmmirror.com
`
2.rollbackFailedOptional: verb npm-session xxx
是因为上一步安装失败后 npm 正在回滚之前的安装依赖项
`
// 可先清除 npm 缓存
npm cache clean --force
// 再重新安装
npm install @kyfe/kye-crm-gitlint
`
`
``