如何在pre-commit配置中排除多个目录?
在pre-commit中配置多路径排除的正确方法
pre-commit的全局exclude参数仅支持单个正则表达式字符串,不能用列表或重复定义参数。要同时排除migrations/.*和tests/.*这两类路径,你需要把多个模式合并成一个正则表达式,用|(逻辑或)分隔。
正确配置示例
把原来的exclude行替换成:
exclude: 'migrations/.*|tests/.*'
完整的配置文件如下:
.pre-commit-config.yaml repos: - repo: https://github.com/psf/black rev: 23.1.0 hooks: - id: black language_version: python3.8 - repo: https://github.com/PyCQA/flake8 rev: 6.0.0 hooks: - id: flake8 exclude: 'migrations/.*|tests/.*'
为什么之前的尝试无效
- 用列表形式定义
exclude:pre-commit的配置解析器不接受这种格式,会直接判定配置无效 - 重复定义
exclude:YAML中重复的键会被后面的覆盖,最终只有tests/.*生效,migrations/.*的规则会被忽略
内容的提问来源于stack exchange,提问作者nholaday
相关产品推荐
相关产品推荐

