如何让composer在git pre-commit钩子中自动运行检查

31次阅读

答案:通过 Composer 脚本与 Git pre-commit 钩子结合,可自动化代码检查。在 composer.json 中定义 lint、check-cs 等命令,手动或使用 leftheris/git-hooks-composer-plugin 插件配置 pre-commit 钩子自动执行检查,确保提交代码符合规范,提升团队协作效率与代码质量。

如何让composer在git pre-commit钩子中自动运行检查

在开发 PHP 项目时,使用 Composer 管理依赖的同时,结合 Git 的 pre-commit 钩子自动运行检查,能有效防止提交不符合规范的代码。以下是具体实现方式。

配置 pre-commit 钩子调用 Composer 脚本

Git 的 pre-commit 钩子是一个脚本文件,存放在项目根目录下的 .git/hooks/pre-commit。你可以在此脚本中调用 Composer 定义的命令进行静态检查。

先确保你的 composer.json 中定义了需要运行的检查命令,例如:

"scripts": {     "check-cs": "phpcs --standard=PSR12 src/",     "check-types": "phpstan analyse src/",     "lint": "php -l src/" }

然后创建或编辑 .git/hooks/pre-commit 文件:

#!/bin/sh # 运行 Composer 检查 composer run lint composer run check-cs composer run check-types <h1>检查上一个命令是否成功</h1><p>if [ $? -ne 0 ]; then echo "Commit 失败:代码检查未通过" exit 1 fi

保存后,给钩子添加执行权限:

chmod +x .git/hooks/pre-commit

使用 Composer 插件简化钩子管理

手动管理钩子不利于团队协作。推荐使用 Composer Hook ManagerPhine/PHAR工具,但更流行的是 leftheris/git-hooks-composer-plugin

如何让composer在git pre-commit钩子中自动运行检查

一览运营宝

一览“运营宝”是一款搭载aiGC的视频创作赋能及变现工具,由深耕视频行业18年的一览科技研发推出。

如何让composer在git pre-commit钩子中自动运行检查41

查看详情 如何让composer在git pre-commit钩子中自动运行检查

安装插件:

composer require --dev leftheris/git-hooks-composer-plugin

composer.json 中添加钩子配置:

"extra": {     "hooks": {         "pre-commit": [             "composer run lint",             "composer run check-cs",             "composer run check-types"         ]     } }

运行 composer installcomposer update 后,插件会自动将命令写入 pre-commit 钩子。

注意事项与最佳实践

这类自动化检查应快速完成,避免拖慢提交流程。

  • 只检查暂存区(staged)文件可以提升效率,例如配合 php-cs-fixer 使用 --diff--dry-run
  • 允许临时跳过检查:提交时加 --no-verify 参数,用于紧急修复。
  • 将钩子纳入版本控制需借助工具(如上面的插件),否则 .git/hooks 不会被 Git 跟踪。
  • 跨平台兼容性:确保钩子脚本在 Windows 和 Unix 系统都能运行,建议使用 PHP 脚本代替 shell 脚本(可选)。

基本上就这些。通过 Composer 脚本与 Git 钩子结合,能让代码质量检查成为提交流程的一部分,减少人为遗漏。

以上就是如何让php js git json composer windows 工具 unix win php composer json git windows 自动化 unix

php js git json composer windows 工具 unix win php composer json git windows 自动化 unix

text=ZqhQzanResources