钩子类型
事件驱动钩子
文件事件钩子
文件保存钩子 (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日