Skip to content

simple-git-hooks

simple-git-hooks 是被广泛采用的 Git 工具,帮助你轻松地管理 Git 钩子。

其它选择

husky 是一个被更广泛采用的工具,但是 husky 修改了 Git 钩子目录,你可能不会喜欢这种做法。你可以考虑使用它,但需要你自行配置。

安装

首先你需要安装 simple-git-hooks。目前支持 simple-git-hooks v2。

shell
npm install simple-git-hooks is-ci esbuild-register -D
shell
yarn add simple-git-hooks is-ci esbuild-register -D
shell
pnpm install simple-git-hooks is-ci esbuild-register -D
shell
bun install simple-git-hooks is-ci esbuild-register -d

配置

simple-git-hooks 目前只支持 CJS。

CJS

javascript
// simple-git-hooks.cjs
const { simpleGitHooks } = require('@modyqyw/fabric');
// or
// const { simpleGitHooks } = require('@modyqyw/fabric/simple-git-hooks');

module.exports = simpleGitHooks();

CLI

更新你的 package.json,增加 prepare 命令。

json
{
  "scripts": {
    "prepare": "is-ci || simple-git-hooks"
  }
}

自定义

参数自定义

给导出的 simpleGitHooks 方法传参可以自定义配置,simpleGitHooks 方法接收两个参数。

第一个参数用于基本自定义,你可以传递 undefined 或对象。要明确地启用或禁用某一个配置,需要明确在传递的对象中设置 boolean 值。

目前支持以下配置:

  • commitlint:使用 commitlint 检查提交信息,安装 commitlint 后默认启用,否则默认禁用
  • lintStaged:使用 lint-staged 针对暂存的 git 文件执行命令,安装 lint-staged 后默认启用,否则默认禁用
javascript
// simple-git-hooks.cjs
require('esbuild-register');
const {
  hasCommitlint,
  hasLintStaged,
  simpleGitHooks,
} = require('@modyqyw/fabric');

module.exports = simpleGitHooks({
  commitlint: hasCommitlint,
  lintStaged: hasLintStaged,
});

第二个参数用于更进一步的自定义,你可以传递一个对象,用于覆盖生成的配置。

javascript
// simple-git-hooks.cjs
require('esbuild-register');
const { simpleGitHooks } = require('@modyqyw/fabric');

module.exports = simpleGitHooks(undefined, {
  // 需要自定义的配置
});

Released under the MIT License.