Skip to content

Git Hooks 管理

VUP 使用 Husky 在 Git 流程中自动执行检查。

当前配置

VUP 通过下面的脚本启用 Husky:

json
{
  "scripts": {
    "prepare": "husky",
    "lint-staged": "lint-staged"
  }
}

执行 pnpm install 后,会通过 prepare 自动安装 hooks。

仓库中的现有 Hooks

当前默认包含:

  • .husky/pre-commit
  • .husky/pre-push

VUP 的 pre-commit 示例:

bash
# 通过 lint-staged 运行 ESLint + Prettier
pnpm lint-staged

# 重新生成模板使用的 apps 列表
node .husky/scripts/generate-apps-list.js

# 将生成文件加入暂存区
git add .template.config.json

VUP 的 pre-push 示例:

bash
# 推送前轻量提示
echo "✅ 准备推送到远程仓库..."

新增或修改 Hook

直接编辑 .husky/ 下的文件:

bash
# 示例:新增 commit-msg hook
cat > .husky/commit-msg <<'HOOK'
npx commitlint --edit "$1"
HOOK
chmod +x .husky/commit-msg

常见实践

  • pre-commit 保持轻量,只检查暂存文件。
  • 重型检查放到 CI,避免本地提交过慢。
  • 命令复杂时抽到脚本文件,避免 hook 文件过长。

故障排查

Hook 没有执行

  • 检查执行权限:chmod +x .husky/*
  • 重新安装依赖触发 preparepnpm install

临时跳过 Hook

bash
# 仅应急使用
git commit --no-verify -m "chore: emergency fix"

相关阅读