首页
/ pre-commit中如何通过alias实现同名hook的差异化配置

pre-commit中如何通过alias实现同名hook的差异化配置

2025-05-16 01:33:22作者:滑思眉Philip

在实际开发中,我们经常会遇到需要为同一个pre-commit钩子工具配置不同参数或作用于不同文件的情况。例如,你可能希望:

  1. 对同一个代码检查工具(如Ruff)配置不同的检查规则集
  2. 在monorepo中为不同子项目配置不同的检查参数

常见场景分析

场景一:同一工具的差异化配置

- repo: https://github.com/astral-sh/ruff-pre-commit
  rev: v0.6.3
  hooks:
    - id: ruff
      args: ["--select", "E"]
      name: Ruff Errors
- repo: https://github.com/astral-sh/ruff-pre-commit
  rev: v0.6.3
  hooks:
    - id: ruff
      args: ["--select", "UP"]
      name: Ruff Upgrades

场景二:monorepo中的差异化配置

- repo: https://github.com/astral-sh/ruff-pre-commit
  rev: v0.6.3
  hooks:
    - id: ruff
      name: Ruff (mono1)
      args: ["--config", "ruff.mono1.toml"]
      files: "mono1pattern"
- repo: https://github.com/astral-sh/ruff-pre-commit
  rev: v0.4.1
  hooks:
    - id: ruff
      name: Ruff (mono2)
      args: ["--config", "ruff.mono2.toml"]
      files: "mono2pattern"

问题核心

默认情况下,pre-commit会将相同ID的钩子视为同一组,无法单独运行其中某一个。这在CI环境中尤其不便,因为我们可能希望:

  1. 为不同的检查创建独立的CI任务
  2. 获得更精确的错误报告
  3. 根据特定检查结果决定后续流程

解决方案:alias配置项

pre-commit提供了alias配置项来解决这个问题。通过为同名钩子设置不同的alias,可以将其视为不同的钩子:

- repo: https://github.com/astral-sh/ruff-pre-commit
  rev: v0.6.3
  hooks:
    - id: ruff
      alias: ruff-errors
      args: ["--select", "E"]
      name: Ruff Errors
登录后查看全文
热门项目推荐
相关项目推荐