钩子类型

事件驱动钩子

文件事件钩子

文件保存钩子 (onSave)

触发时机: 当文件被保存时

常见用途:

  • 代码格式化和 lint 检查
  • 自动生成文档
  • 运行单元测试
  • 提交前代码质量检查

示例配置:

name: "自动格式化"
trigger: onSave
filePattern: "**/*.{js,ts,jsx,tsx}"
prompt: "格式化此文件并修复 ESLint 错误"

文件创建钩子 (onCreate)

触发时机: 当新文件被创建时

常见用途:

  • 添加文件头部注释
  • 生成样板代码
  • 创建对应的测试文件
  • 更新索引文件

示例配置:

name: "添加版权信息"
trigger: onCreate
filePattern: "**/*.js"
prompt: "在文件顶部添加版权注释,包含当前年份和公司信息"

文件删除钩子 (onDelete)

触发时机: 当文件被删除时

常见用途:

  • 清理相关依赖
  • 更新导入引用
  • 删除对应的测试文件
  • 更新文档索引

示例配置:

name: "清理导入"
trigger: onDelete
filePattern: "**/*.{js,ts}"
prompt: "检查项目中是否有引用被删除文件的导入语句,如有则移除"

Git 事件钩子

提交前钩子 (preCommit)

触发时机: Git 提交前

常见用途:

  • 代码质量检查
  • 运行测试套件
  • 检查敏感信息泄露
  • 格式化代码

示例配置:

name: "提交前检查"
trigger: preCommit
prompt: "运行 lint 检查和单元测试,确保代码质量符合标准"

分支切换钩子 (onBranchSwitch)

触发时机: Git 分支切换时

常见用途:

  • 清理临时文件
  • 更新依赖
  • 重新启动开发服务器
  • 同步配置文件

示例配置:

name: "分支环境同步"
trigger: onBranchSwitch
prompt: "检查 package.json 是否有更新,如有则运行 npm install"

条件钩子

文件模式匹配钩子

特定文件类型钩子

触发条件: 基于文件扩展名或路径模式

常见模式:

  • **/*.test.js - 测试文件
  • **/*.md - Markdown 文档
  • src/**/*.tsx - React 组件
  • docs/**/* - 文档文件

示例配置:

name: "React 组件检查"
trigger: onSave
filePattern: "**/*.{jsx,tsx}"
prompt: "检查组件是否遵循团队编码规范,包括命名、属性类型和文档"

目录特定钩子

触发条件: 基于文件所在目录

常见用途:

  • API 路由自动生成
  • 组件库维护
  • 文档更新
  • 配置同步

示例配置:

name: "API 文档生成"
trigger: onSave
filePattern: "api/**/*.js"
prompt: "为 API 端点生成或更新 OpenAPI 文档"

内容检测钩子

关键词触发钩子

触发条件: 文件包含特定关键词或模式

常见用途:

  • 安全漏洞检测
  • TODO 项目跟踪
  • 性能优化提醒
  • 最佳实践建议

示例配置:

name: "安全检查"
trigger: onSave
condition: "contains(content, 'password') || contains(content, 'api_key')"
prompt: "检查是否存在硬编码的敏感信息,如有建议使用环境变量"

代码复杂度钩子

触发条件: 基于代码度量指标

常见用途:

  • 代码重构建议
  • 性能优化提醒
  • 可维护性改进
  • 测试覆盖率检查

示例配置:

name: "复杂度检查"
trigger: onSave
condition: "cyclomatic_complexity > 10"
prompt: "此函数复杂度较高,建议拆分成更小的函数以提高可维护性"

手动触发钩子

上下文菜单钩子

触发方式: 右键菜单选项

常见用途:

  • 代码重构操作
  • 文档生成
  • 测试生成
  • 代码审查

示例配置:

name: "生成单元测试"
trigger: manual
contextMenu: "生成测试"
filePattern: "**/*.{js,ts}"
prompt: "为选中的函数或类生成全面的单元测试"

命令面板钩子

触发方式: 通过命令面板调用

常见用途:

  • 项目维护任务
  • 批量操作
  • 报告生成
  • 工具集成

示例配置:

name: "依赖更新检查"
trigger: command
command: "检查依赖更新"
prompt: "检查项目依赖是否有更新版本,提供升级建议和潜在风险评估"

定时钩子

定期维护钩子

触发方式: 基于时间间隔

常见用途:

  • 依赖安全扫描
  • 性能基准测试
  • 代码质量报告
  • 备份操作

示例配置:

name: "每日安全扫描"
trigger: schedule
interval: "daily"
time: "09:00"
prompt: "运行安全扫描,检查依赖漏洞和代码安全问题"

里程碑钩子

触发方式: 项目特定事件

常见用途:

  • 版本发布准备
  • 性能分析
  • 代码审查
  • 文档更新

示例配置:

name: "发布前检查"
trigger: milestone
condition: "version_tag_created"
prompt: "执行完整的发布前检查清单,包括测试、文档和性能验证"

链式钩子

钩子组合

特性: 多个钩子按顺序执行

常见场景:

  • 完整的 CI/CD 流程
  • 多阶段代码检查
  • 渐进式优化
  • 综合报告生成

示例配置:

name: "完整代码检查流程"
trigger: onSave
chain:
  - prompt: "检查代码格式和 lint 错误"
  - prompt: "运行相关单元测试"
  - prompt: "检查代码安全性"
  - prompt: "生成代码质量报告"

条件链式钩子

特性: 基于前一步结果决定是否继续

常见场景:

  • 错误处理流程
  • 智能优化建议
  • 渐进式重构
  • 自适应测试

示例配置:

name: "智能优化流程"
trigger: onSave
conditionalChain:
  - condition: "hasLintErrors"
    prompt: "修复 lint 错误"
  - condition: "testsPassing"
    prompt: "检查性能优化机会"
  - condition: "complexityHigh"
    prompt: "建议重构策略"

钩子配置最佳实践

性能考虑

  • 避免在高频事件上运行重度操作
  • 使用适当的文件模式过滤
  • 考虑异步执行长时间运行的任务
  • 实现合理的超时机制

可维护性

  • 使用描述性的钩子名称
  • 添加详细的注释说明
  • 定期审查和更新钩子配置
  • 测试钩子在不同场景下的行为

团队协作

  • 建立钩子配置的版本控制
  • 文档化团队钩子标准
  • 定期分享有用的钩子配置
  • 考虑钩子对不同开发环境的影响

页面最后更新:2025年7月21日