15

我刚刚为我的 Django 存储库设置了BlackPre-Commit 。

我使用了我遵循的教程中的 Black 的默认配置,它运行良好,但我无法从中排除我的迁移文件。

这是我一直使用的默认配置:

pyproject.toml

[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
    \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
)/
'''

我使用Regex101.com来确保^.*\b(migrations)\b.*$匹配apps/examples/migrations/test.py.

[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
    \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
  | ^.*\b(migrations)\b.*$
)/
'''

当我将该正则表达式行添加到我的配置文件并运行pre-commit run --all-files时,它会忽略该.git文件夹,但仍会格式化迁移文件。

4

4 回答 4

11

将迁移排除添加到您的.pre-commit-config.yaml文件中

- id: black
  exclude: ^.*\b(migrations)\b.*$
于 2020-09-11T05:38:31.580 回答
7

这就是问题的解决方案:pyproject.toml

[tool.black]
exclude = '''
/(
  | migrations
)/

'''
于 2020-09-20T18:39:19.250 回答
2

如果可以避免的话,为配置维护两个不同的位置exclude看起来并不好,并且对于 CI 也不起作用(如果您想在 PR 检查中干运行黑色)。添加以下工作,pyproject.toml然后您可以在预提交挂钩和 CI 中运行相同的工作:

[tool.black]
...
exclude = '''

(
  /(
    ...
    | .+/migrations
  )/
)
'''
于 2021-03-15T21:08:07.343 回答
0

试试这个(注意最后一行):

[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
    \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
  | migrations
)/
'''
于 2020-03-24T22:57:09.830 回答