跳转至

在 pre-commit 中使用 uv

官方提供了一个 pre-commit 钩子,位于astral-sh/uv-pre-commit

为确保即使通过 pre-commit 修改了 pyproject.toml 文件,uv.lock 文件也保持最新,请在 .pre-commit-config.yaml 中添加以下内容:

.pre-commit-config.yaml
repos:
  - repo: https://github.com/astral-sh/uv-pre-commit
    # uv 版本。
    rev: 0.7.4
    hooks:
      - id: uv-lock

要使用 pre-commit 保持 requirements.txt 文件为最新状态:

.pre-commit-config.yaml
repos:
  - repo: https://github.com/astral-sh/uv-pre-commit
    # uv 版本。
    rev: 0.7.4
    hooks:
      - id: uv-export

要通过 pre-commit 编译依赖,请在 .pre-commit-config.yaml 中添加以下内容:

.pre-commit-config.yaml
repos:
  - repo: https://github.com/astral-sh/uv-pre-commit
    # uv 版本。
    rev: 0.7.4
    hooks:
      # 编译依赖
      - id: pip-compile
        args: [requirements.in, -o, requirements.txt]

要编译其他文件,修改 argsfiles

.pre-commit-config.yaml
repos:
  - repo: https://github.com/astral-sh/uv-pre-commit
    # uv 版本。
    rev: 0.7.4
    hooks:
      # 编译依赖
      - id: pip-compile
        args: [requirements-dev.in, -o, requirements-dev.txt]
        files: ^requirements-dev\.(in|txt)$

要同时在多个文件上运行该钩子:

.pre-commit-config.yaml
repos:
  - repo: https://github.com/astral-sh/uv-pre-commit
    # uv 版本。
    rev: 0.7.4
    hooks:
      # 编译依赖
      - id: pip-compile
        name: pip-compile requirements.in
        args: [requirements.in, -o, requirements.txt]
      - id: pip-compile
        name: pip-compile requirements-dev.in
        args: [requirements-dev.in, -o, requirements-dev.txt]
        files: ^requirements-dev\.(in|txt)$