如何使用自定义参数运行单个pre-commit钩子
如何给pre-commit钩子临时传递自定义参数
你提到的需求确实有更简洁的解决方式,不用在两个虚拟环境重复安装依赖,以下是几种实用办法:
1. 直接调用pre-commit缓存中的工具
pre-commit会把每个钩子的依赖都安装在专属的缓存虚拟环境里,你可以直接找到对应工具的可执行文件,带自定义参数运行:
- 先定位pre-commit为目标工具创建的虚拟环境路径:在Linux/macOS下一般是
~/.cache/pre-commit/目录,每个钩子对应一个以仓库哈希命名的文件夹,进入后找到venv/bin/[工具名](Windows下是venv/Scripts/[工具名].exe) - 直接运行该路径的工具并加参数,比如针对black:
这样就复用了pre-commit已安装好的工具,无需在项目环境重复安装。~/.cache/pre-commit/repoabc123/venv/bin/black --preview ./your_code_dir
2. 临时使用自定义配置文件
如果不想手动找路径,可以写一个临时的pre-commit配置片段,覆盖目标钩子的参数:
- 创建临时yaml文件,比如
temp_black_config.yaml,内容如下:repos: - repo: https://github.com/psf/black rev: 23.10.1 # 替换成你项目里实际使用的版本号 hooks: - id: black args: [--preview] - 用这个临时配置运行钩子:
pre-commit run black --config temp_black_config.yaml
3. 环境变量临时覆盖参数(部分钩子支持)
部分钩子支持通过环境变量传递额外参数,比如针对black可以尝试:
BLACK_ARGS="--preview" pre-commit run black
注意这个方法依赖钩子本身的实现,不是所有钩子都支持。
遗憾的是pre-commit目前没有你提到的--just-call-the-package这类直接传递参数的原生命令,但上面的方法已经能解决重复安装依赖的问题。
内容的提问来源于stack exchange,提问作者baxx
相关产品推荐
相关产品推荐

