For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt, and this page is available as Markdown at /zh/guide/git-hooks.md.
close
  • 简体中文
  • Git hooks

    使用 rs setup 可以统一管理仓库级 Git hooks,并通过 hook 脚本运行项目命令。hook 脚本默认存放在 .rstack/hooks 中,可用于校验提交信息、推送前检查代码、提交前格式化文件等场景。

    下面以 pre-commit 为例:先通过 rs setup 安装 Git hooks,再在 pre-commit hook 中运行 rs staged,对本次提交的暂存文件进行代码检查和格式化。

    安装 hooks

    在负责管理仓库 hooks 的项目中,将 rs setup 添加到 package.jsonprepare 脚本:

    package.json
    {
      "scripts": {
        "prepare": "rs setup"
      }
    }

    执行一次该脚本,完成 hooks 安装:

    npm
    yarn
    pnpm
    bun
    npm run prepare

    rs setup 会将仓库的 core.hooksPath 设为 .rstack/hooks/_,可以通过以下命令确认是否安装成功:

    git config --local --get core.hooksPath
    # .rstack/hooks/_
    Tip
    • _ 目录由命令动态生成,且默认被 Git 忽略。
    • 如果检测到其他 hooks 路径或已有 Git hooks,rs setup 会跳过安装。请先迁移需要保留的 hooks,移除原有配置,然后重试。详细说明请参考 rs setup 指南

    提交前检查

    通过 pre-commit hook 可以检查和格式化本次提交的暂存文件。

    配置任务

    在 Rstack 配置文件中添加暂存文件任务,根据项目实际使用的语言来调整 glob 模式:

    rstack.config.ts
    import { define } from 'rstack';
    
    define.staged({
      '*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}': ['rs lint --fix', 'rs fmt'],
      '*.{json,md,mdx,css,scss,less,html,yml,yaml}': 'rs fmt',
    });

    添加 hook

    创建 .rstack/hooks/pre-commit,并在其中运行 rs staged

    .rstack/hooks/pre-commit
    rs staged

    执行流程

    运行 git commit 时,Git 会调用 rs setup 安装的 hook。该 hook 会执行 .rstack/hooks/pre-commit,再由 rs staged 对暂存文件运行配置的任务。

    rs staged 会将匹配的暂存文件传给对应命令,数组中的命令按顺序执行,rs lint --fix 先修复可自动处理的问题,再由 rs fmt 统一格式。如果只希望代码检查阻止提交而不修改文件,可以移除 --fix

    全部任务通过后,提交会继续,并包含修复和格式化结果。任一任务失败都会中止提交,解决问题后重新提交即可。