@kyfe/kye-crm-gitlint
v1.0.4
Published
git 相关 hook 阶段对代码进行规范性检测以及自动化功能
Downloads
8
Maintainers
Keywords
Readme
GITLint
GITLint 是一款在代码提交时对变更进行一部分场景检测;代码推送时的一些自动化功能。其中内置了部分检测通用场景,并且提供配置入口供用户自定义功能以及规则。它们是在 pre-commit hook
、pre-push hook
中执行。
安装和使用
npm install @kyfe/kye-crm-gitlint
代码检测
pre-commit hook
中针对本次变更代码进行一些规范检测
框架已在项目内的 pre-commit hook
中集成了 eslint
校验,我们只需将自定义检测规则添加进去,进入文件 base/packages/lint-staged/index.js
引入并调用即可。
const GITLint = require('@kyfe/kye-crm-gitlint')
...
// 要放在代码最后调用,先进行 eslint 检测,通过后再进行自定义校验
GITLint.start()
自动合并
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
}
}
}
配置说明
| 字段 | 字段说明 | 类型 | | -------- | -------- | ------ | | root | 整个功能的开启或关闭 | string、boolean | | extend | 自定扩展功能 | object | | rules | 错误级别以及开启、关闭 | object |
extend
内可以自定义各种检测功能,GITLint
会提供对应的解析函数已经其他内部方法辅助,配置规则:
- 项目内任意位置内建新文件处理自定义检测,并在入口文件导出方法,
module.exports = checkFun
。 .gitlintrc
文件内extend
中对应hook
下引入,checkFun: require('../xx.js')
。GITLint
会在对应 hook 中会拉取配置文件,注册对应事件。
rules
内对各功能可自定义错误级别以及开启、关闭规则:
error
:强校验,规则不通过拒绝执行下一步;warning
:警告,规则不通过仅提示,不阻止执行一下;1
:规则开启;0
:规则关闭;
内置功能
rules.commit.auth
按钮权限检测,
kye-button
、el-button
、query-table
中按钮是否有配置auth
字段。示例如下
触发校验
<kye-button type="text">新增</kye-button>
<kye-button type="text" auth="">新增</kye-button>
// query-table tools
{
label: '新增',
icon: 'plus',
func: () => {}
}
{
label: '新增',
icon: 'plus',
auth: '',
func: () => {}
}
不触发校验
// 无需权限按钮可添加 git_ignore_auth 属性进行豁免
<kye-button type="text" git_ignore_auth>新增</kye-button>
<kye-button type="text" auth="BTo2Q1kDyEVJ">新增</kye-button>
// query-table tools
{
label: '新增',
icon: 'plus',
git_ignore_auth: true,
func: () => {}
}
{
label: '新增',
icon: 'plus',
auth: 'BTo2Q1kDyEVJ',
func: () => {}
}
rules.commit.css
css 规范检测,根元素 class 命名、style 标签编写规范等(同框架内 css 检测规则)。示例如下:
触发校验
<template>
<div class="container"></div>
</template>
<style lang="scss">
</style>
<style lang="scss" scoped>
</style>
<style lang="scss">
</style>
不触发校验
<template>
<div class="crm-kye-price"></div>
</template>
<style lang="scss" scoped>
</style>
rules.commot.complexity
<<<<<<< HEAD
单文件代码认知复杂度检测,检测本次提交代码中单文件复杂度是否超过设置的阈值,暂时内置最大为 150;
push
pre-push hook
中针对 commit 记录自动合并功能
rules.push.auto-merge-commit
======= 单文件代码认知复杂度检测,检测本次提交代码中单文件复杂度是否超过设置的阈值,暂时内置最大为 150;
push
pre-push hook
中针对 commit 记录自动合并功能 push 代码时会自动检测相同的 commit message,将相同的记录自动合并成一个再 push。事例如下:
合并前
合并后
常见问题
安装
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