You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

  1. 安装pre-commit工具:
pip install pre-commit
  1. 在项目中安装hook:
pre-commit install

测试验证

尝试提交一个.yml格式的文件:

  • 如果用选项1的脚本,提交会被阻止,控制台会输出错误提示,你需要手动将文件改名为.yaml后重新提交。
  • 如果用选项2的脚本,文件会被自动重命名,你只需要再次执行提交命令即可。

内容的提问来源于stack exchange,提问作者Opal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:15:32