wtyd / githooks
以简单而巧妙的方式管理 Git Hooks。
Requires
- php: >=7.1
Requires (Dev)
- fakerphp/faker: ^1.19
- intonate/tinker-zero: 1.*
- laravel-zero/framework: ^5.0 | ^6.0 | ^7.0 | 8.* | 9.*
- laravel-zero/phar-updater: ^1.0.6
- mikey179/vfsstream: ^1.6
- mockery/mockery: ^1.3
- php-mock/php-mock: ^2.2
- php-parallel-lint/php-parallel-lint: ^1.2
- phpmd/phpmd: ^2.9
- phpstan/phpstan: ^1.4
- phpunit/php-code-coverage: ^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0
- phpunit/phpunit: ^7.0 | ^8.0 | ^9.0
- squizlabs/php_codesniffer: ^3.5
- symfony/yaml: ^3.0 | ^4.0 | ^5.0 | 6.*
This package is auto-updated.
Last update: 2024-09-09 22:37:27 UTC
README
1. Wtyd/GitHooks
有许多其他工具和 Composer 插件用于管理 Git Hooks。但 GitHooks 提供了
- 独立应用程序。GitHooks 是一个二进制文件(.phar),因此它的依赖项不会与您的应用程序的依赖项冲突。
- 通过 Composer 管理。您不需要其他工具,如 Phive 或其他工具。
- 集中管理所有 QA 工具配置(至少所有受支持的工具)。
- 它通过使用仅
githooks 工具名称
命令来抽象开发者如何执行 QA 工具。 - 您还可以创建自己的脚本并配置任何 Git Hook。
此外,如果您有混合项目,它还可以与像 typicode/husky 这样的 JavaScript 验证工具一起使用。
2. 要求
- PHP >= 7.1
- 您需要检查代码的工具。
- 或您自己的钩子脚本。
3. 安装
1. GitHooks 必须像开发依赖项一样通过 Composer 安装
composer require --dev wtyd/githooks
注意:对于 php < 8.1,您必须在您的 composer.json
中的 scripts
部分添加以下 post-update-cmd
事件
"scripts": { "post-update-cmd": [ "Wtyd\\GitHooks\\Utils\\ComposerUpdater::phpOldVersions" ] }
然后运行 composer update wtyd/githooks
。
版本 2.3.0 之前使用的方法是 php72orMinorUpdate,但它已被弃用,并将在版本 3.0.0 中删除
也可以方便地将其添加到 post-install-cmd
事件中,这样项目的其他开发者就不会在构建时遇到问题
"scripts": { "post-update-cmd": "Wtyd\\GitHooks\\Utils\\ComposerUpdater::phpOldVersions", "post-install-cmd": "Wtyd\\GitHooks\\Utils\\ComposerUpdater::phpOldVersions" }
2. 安装所有需要的 受支持的工具。您如何安装工具并不重要。
3. 使用 githooks conf:init
初始化 GitHooks。此命令在根路径中创建配置文件(githooks.yml
)。
4. 运行 githooks hook
。它将启动 GitHooks 的预提交事件的脚本复制到 .git/hooks
目录。您也可以运行 githooks hook otherHook MyScriptFile.php
以设置任何带有自定义脚本的钩子。有关更多信息,请参阅 wiki。
为确保自动配置,我们可以配置 composer.json
文件的 post-update-cmd
和 post-install-cmd
事件中的命令(scripts
部分)
"scripts": { "post-update-cmd": [ "vendor/bin/githooks hook" // or "vendor/bin/githooks hook pre-commit MyScriptFile.php" ], "post-install-cmd": [ "vendor/bin/githooks hook" ] }
5. 设置配置文件。
4. 使用方法
当您提交时,所有配置的代码检查工具都会自动启动。如果您的代码通过了所有检查,GitHooks 允许您提交。如果没有,您必须修复代码并再次尝试。
您还可以随时运行 GitHooks。同时运行所有工具或逐个运行。
githooks tool all # Run all tools githooks tool phpcs # Run only phpcs
5. 受支持的工具
目前,受支持的工具包括
- Php CodeSniffer(phpcs 和 phpcbf)
- Php Copy Paste Detector
- Php Mess Detector
- Parallel-lint
- Php Stan
- Local PHP Security Checker
但您可以在任何 Git Hook 上设置自己的脚本。
6. 设置配置文件
githooks.yml
文件分为三个部分
6.1. 选项
6.1.1. 执行
execution
标志表示 GitHooks 将如何运行
full
(默认选项):始终对所有工具针对每个工具设置的路径执行。例如,您将 phpcs 设置为在src
和app
目录中运行。提交只包含来自database
目录的修改文件。即使这些目录中没有文件被修改,Phpcs 也会检查src
和app
目录。fast
:此选项仅对提交中修改的文件运行工具。- 此选项仅影响以下工具:phpcs、phpmd、phpstan 和 parallel-lint。其余工具将以完整选项运行。
- 警告!!! 您必须在
githooks.yml
或每个工具的配置文件中设置工具的排除项,因为此选项覆盖了工具的paths
键,以便它们仅对修改的文件执行。
6.1.2. 进程
同时以多个进程运行多个工具(tool all
命令)。默认进程数为 1。
6.2. 工具
这是一个包含 GitHooks 将运行的工具名称的数组。工具的名称是它们的可执行文件。如果想要执行所有工具,则 Tools
键如下所示
Tools: - phpstan - security-checker - parallel-lint - phpcs - phpcbf - phpmd - phpcpd
工具的顺序是它们将被执行的顺序。
6.3. 设置工具
在下一步中,您必须使用与 Tools 键中相同的名称配置工具。例如,为设置 phpcs
phpcs: executablePath: vendor/bin/phpcs paths: [src, tests] ignore: [vendor] standard: 'PSR12'
所有可用选项都在wiki中。
7. 贡献
非常感谢他人的贡献!发送 pull request/issue。在 Contributing 的 Wiki 部分检查所有步骤。谢谢!
8. 许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。