Hooks 配置

让项目「一生成就能用」

Hooks 让你在项目生成前后执行自动化脚本,实现依赖安装、Git 初始化等操作。

Hooks 类型

AgileBuilder 支持两种 hooks:

| Hook | 执行时机 | 用途 | |------|----------|------| | pre-generate | 生成文件前 | 验证参数、准备环境 | | post-generate | 生成文件后 | 安装依赖、初始化 Git |

配置 Hooks

agilebuilder.json 中配置:

{
  "hooks": {
    "pre-generate": "node hooks/pre-generate.js",
    "post-generate": "node hooks/post-generate.js"
  }
}

内置 Hooks

AgileBuilder 提供了常用的内置 hooks:

安装依赖

{
  "hooks": {
    "post-generate": "@agilebuilder/install-deps"
  }
}

自动检测 package.json 并使用适当的包管理器安装依赖。

初始化 Git

{
  "hooks": {
    "post-generate": "@agilebuilder/git-init"
  }
}

组合多个 Hooks

{
  "hooks": {
    "post-generate": [
      "@agilebuilder/install-deps",
      "@agilebuilder/git-init",
      "node hooks/custom.js"
    ]
  }
}

自定义 Hooks

创建自定义 hook 脚本:

// hooks/post-generate.js
module.exports = async (context) => {
  const { projectPath, variables } = context
  
  console.log(`Project generated at: ${projectPath}`)
  console.log(`Variables:`, variables)
  
  // 执行自定义逻辑
  if (variables.useTypeScript) {
    // TypeScript 特定的初始化
  }
}

Context 对象

Hook 函数接收 context 对象:

interface HookContext {
  projectPath: string      // 生成的项目路径
  templatePath: string     // 模板路径
  variables: Record<string, any>  // 用户填写的变量
  logger: Logger           // 日志工具
}

下一步