如何配置pre-commit hook强制YAML文件使用yaml扩展名
配置pre-commit Hook强制统一使用.yaml扩展名
要实现强制所有YAML文件使用.yaml扩展名而非.yml,可以通过自定义pre-commit hook来完成,步骤如下:
1. 准备自定义检查脚本
在项目根目录创建一个名为enforce-yaml-extension.sh的脚本,根据需求选择以下两种逻辑之一:
选项1:报错阻止提交(需手动改名)
这种方式会在检测到.yml文件时直接终止提交流程,提示用户手动修改扩展名:
#!/bin/bash # 筛选出暂存区中所有.yml格式的文件 yml_files=$(git diff --cached --name-only | grep -E '\.yml$') if [ -n "$yml_files" ]; then echo "❌ 发现不符合规范的YAML文件扩展名,请统一改为.yaml:" echo "$yml_files" echo "✅ 正确示例:lol.yaml;❌ 错误示例:lol.yml" exit 1 fi exit 0
选项2:自动重命名(无需手动操作)
这种方式会自动将暂存区中的.yml文件重命名为.yaml,并将重命名后的文件加入暂存:
#!/bin/bash # 筛选出暂存区中所有.yml格式的文件 yml_files=$(git diff --cached --name-only | grep -E '\.yml$') for file in $yml_files; do new_file="${file%.yml}.yaml" git mv "$file" "$new_file" echo "🔄 已自动将 $file 重命名为 $new_file" done exit 0
给脚本添加执行权限:
chmod +x enforce-yaml-extension.sh
2. 配置pre-commit hook
在项目根目录创建.pre-commit-config.yaml文件,内容如下:
repos: - repo: local hooks: - id: enforce-yaml-extension name: Enforce .yaml extension for YAML files entry: ./enforce-yaml-extension.sh language: script types: [yaml] stages: [commit]
3. 安装pre-commit及hook
- 安装pre-commit工具:
pip install pre-commit
- 在项目中安装hook:
pre-commit install
测试验证
尝试提交一个.yml格式的文件:
- 如果用选项1的脚本,提交会被阻止,控制台会输出错误提示,你需要手动将文件改名为
.yaml后重新提交。 - 如果用选项2的脚本,文件会被自动重命名,你只需要再次执行提交命令即可。
内容的提问来源于stack exchange,提问作者Opal
相关产品推荐
相关产品推荐

