@kyfe/kye-crm-gitlint

1.0.4 • Public • Published

GITLint

GITLint 是一款在代码提交时对变更进行一部分场景检测;代码推送时的一些自动化功能。其中内置了部分检测通用场景,并且提供配置入口供用户自定义功能以及规则。它们是在 pre-commit hookpre-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 会提供对应的解析函数已经其他内部方法辅助,配置规则:

  1. 项目内任意位置内建新文件处理自定义检测,并在入口文件导出方法,module.exports = checkFun
  2. .gitlintrc 文件内 extend 中对应 hook 下引入,checkFun: require('../xx.js')
  3. GITLint 会在对应 hook 中会拉取配置文件,注册对应事件。

rules 内对各功能可自定义错误级别以及开启、关闭规则:

  • error:强校验,规则不通过拒绝执行下一步;
  • warning:警告,规则不通过仅提示,不阻止执行一下;
  • 1:规则开启;
  • 0:规则关闭;

内置功能

rules.commit.auth

按钮权限检测,kye-buttonel-buttonquery-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

Readme

Keywords

none

Package Sidebar

Install

npm i @kyfe/kye-crm-gitlint

Weekly Downloads

1

Version

1.0.4

License

ISC

Unpacked Size

167 kB

Total Files

28

Last publish

Collaborators

  • kye-crm
  • insistem
  • zybieku
  • codexgea
  • pagebi888
  • kye-components
  • heyang_mj
  • linxingli
  • kyefe666
  • tim_cj