如何让pre-commit的check-jsonschema校验.meta后缀类JSON文件?
解决check-jsonschema校验.meta后缀JSON文件的问题
问题描述
项目中有大量.meta后缀的JSON结构文件,希望通过pre-commit的check-jsonschema钩子做Schema校验,但指定files: ^data/.*\.meta$后钩子会跳过校验,而.json文件能正常检测违规。
原因分析
check-jsonschema钩子默认会根据文件扩展名过滤,只处理它识别为JSON的文件(比如.json、.json5等),.meta不在默认列表里,所以即使通过files参数匹配到文件,也会被内部过滤跳过。
解决办法
在钩子参数中添加--filter-files=false,关闭钩子的文件类型过滤逻辑,这样所有被files参数匹配到的文件都会被当作JSON来校验。
修改后的pre-commit配置如下:
# .pre-commit-config.yaml repos: - repo: https://github.com/python-jsonschema/check-jsonschema rev: '0.27.3' hooks: - id: check-jsonschema name: Validate meta files args: ["--schemafile", "schemas/my_schema.json", "--filter-files=false"] files: ^data/.*\.meta$
额外注意事项
- 确保
.meta文件内容是标准JSON格式:比如示例数据里的中文引号(“”)要替换为英文引号(""),否则校验会直接失败。 - 如果存在非JSON格式的
.meta文件,可配合--skip-invalid参数跳过无效文件,但更建议统一文件格式以保证校验有效性。
内容的提问来源于stack exchange,提问作者Tomasz Kubat
相关产品推荐
相关产品推荐

