Download the PHP package wtyd/githooks without Composer
On this page you can find all versions of the php package wtyd/githooks. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download wtyd/githooks
More information about wtyd/githooks
Files in wtyd/githooks
Informations about the package githooks
1. Wtyd/GitHooks
GitHooks is a standalone CLI tool (.phar) for managing git hooks and running QA tools in PHP projects. Built with Laravel Zero.
Why GitHooks?
- Standalone binary — distributed as
.phar, so its dependencies don't interfere with your project. - Managed with Composer — no need for Phive or other tools.
- Unified configuration — one file (
githooks.php) configures all QA tools, hooks, and execution options. - Hooks, flows, jobs — map git events to groups of QA tasks with parallel execution, fail-fast, and conditional execution.
- Language agnostic — the
customjob type can run any command (eslint,prettier,composer audit, etc.), so GitHooks manages both backend and frontend QA from a single configuration.
2. Requirements
- PHP >= 7.4
- The QA tools you want to run (phpstan, phpcs, phpmd, etc.)
3. Install
1. Install GitHooks as a dev dependency:
Note: for PHP < 8.1 you must add the following events to the scripts section in your composer.json:
Then run composer update wtyd/githooks.
2. Initialize the configuration file:
In interactive mode, GitHooks detects QA tools in vendor/bin/ and generates a tailored githooks.php. You can also use --no-interaction to copy a template.
3. Install the git hooks:
This creates a .githooks/ directory with universal hook scripts and configures git config core.hooksPath .githooks. The .githooks/ directory should be committed to version control.
To automate hook installation, add it to your composer.json:
4. Usage
When you commit, all configured QA tools run automatically. If all checks pass, the commit proceeds. If not, you fix the code and try again.
All checks passed:
Some checks failed:
Running manually
5. Configuration
GitHooks uses a PHP configuration file (githooks.php) with three sections: hooks, flows, and jobs.
Key concepts
- Hooks map git events (
pre-commit,pre-push, etc.) to flows and jobs. Supports conditional execution by branch (only-on/exclude-on) and staged file patterns (only-files/exclude-files). - Flows are named groups of jobs with shared options (
fail-fast,processes,time-budget,memory-budget,reports). Reusable across hooks and directly executable from CLI. A flow can declareon => [branch_pattern => attrs]to pick its execution mode per branch (e.g.fullonmaster,fast-branchelsewhere). Each entry injobsaccepts the plain job name or an object{job, needs?, only-files?, exclude-files?}to declare intra-flow dependencies and per-entry admission gates. Meta-flows (flows.<X>.flows) compose other flows in a single run. - Jobs are individual QA tasks. Each declares a
typeand its arguments. Jobs can inherit from other jobs withextends. Whenexecutable-pathis omitted, GitHooks auto-detects the binary invendor/bin/. Per-job thresholds (warn-after,fail-after,memory,cores) cap regressions. - Execution modes:
full(default),--fast(only staged files),--fast-branch(only files changed vs base branch),--fast-dirty(unified working tree: dirty vsHEAD∪ untracked — ideal for AI agentic hooks),--files/--files-from(explicit list).
See the documentation site for the full configuration reference.
6. Supported Tools
| Tool | Type | Description |
|---|---|---|
| PHP CodeSniffer | phpcs / phpcbf |
Code style checking and auto-fixing |
| PHPStan | phpstan |
Static analysis |
| Psalm | psalm |
Static analysis |
| PHP Mess Detector | phpmd |
Code quality rules |
| Parallel-lint | parallel-lint |
Syntax checking |
| PHPUnit | phpunit |
Unit testing |
| Paratest | paratest |
Parallel PHPUnit driver |
| PHP CS Fixer | php-cs-fixer |
Code style auto-fixing |
| Rector | rector |
Automated code refactoring |
| PHP Copy Paste Detector | phpcpd |
Duplicate code detection |
| Inline command | script |
Run a single shell command (executable: 'composer audit'). No path filtering. |
| Any tool | custom |
Run any binary with script (one-liner) or executable-path + paths (+ accelerable: true to opt into --fast / --fast-branch filtering) |
Two ways to run non-PHP tools:
script— minimal, one-liner command for tools that don't take paths (composer audit,npm audit, etc.).custom— path-aware execution. Two modes: pass the full command inscript, or declareexecutable-path+paths+ optionalother-arguments. Setaccelerable: trueto filter paths down to staged / branch-changed files when running with--fast/--fast-branch.
7. Commands
| Command | Description |
|---|---|
githooks flow <name> |
Run a single flow. |
githooks flows <name1> <name2>… |
Run multiple flows in a combined plan: ad-hoc list, declarative meta-flow, or mixed. Jobs deduped by first occurrence. |
githooks job <name> |
Run a single job. Pass extra args to the underlying tool with --: githooks job phpunit -- --filter=MyTest. |
githooks hook |
Install git hooks via core.hooksPath. |
githooks hook:clean |
Remove installed hooks. |
githooks status |
Show hook installation status. |
githooks cache:clear [jobs…] |
Clear QA tool cache files. Accepts job names, flow names, or no argument (clear all). |
githooks conf:init |
Generate configuration file (interactive or template). |
githooks conf:check |
Validate configuration with deep checks (paths, executables, configs, deprecations, did-you-mean for typos). |
githooks conf:migrate |
Migrate v2 config to v3 format. |
githooks system:info |
Show CPU detection (cgroup-aware) and process configuration. |
Common flags for flow / flows / job
| Flag | Purpose |
|---|---|
--mode=full\|fast\|fast-branch\|fast-dirty / --fast / --fast-branch / --fast-dirty |
Select execution mode. fast filters to staged files, fast-branch to files changed vs base branch, fast-dirty to the unified working tree (dirty vs HEAD ∪ untracked). |
--branch=X (flow only) |
Force branch name used to resolve flows.<X>.on => [branch_pattern => …]. Overrides CI env vars and git rev-parse HEAD. In flows/job, branch resolution falls back to $GITHOOKS_BRANCH / CI env / git. |
--files=a,b,c / --files-from=PATH / --exclude-pattern=glob |
Run against an explicit list of files (CSV, manifest, or with exclusion patterns). |
--processes=N, --fail-fast, --only-jobs=a,b, --exclude-jobs=a,b, --dry-run |
Control parallelism, fail-fast behaviour, and job selection. |
--format=text\|json\|junit\|sarif\|codeclimate |
Output format on stdout. JSON v2 schema is stable. |
--report-json=PATH, --report-junit=PATH, --report-sarif=PATH, --report-codeclimate=PATH |
Write structured reports to files (one or many at once). --no-reports skips the config-declared reports. |
--output=PATH |
Write the --format=… payload to a file instead of stdout. |
--show-progress |
Force progress to stderr even with a structured --format (CI dashboards). |
--stats |
Print a 5-column table (Job / Status / Time / Peak Cores / Peak Memory) plus temporal attribution at the end of the flow. Also exposes stats block in JSON v2. |
--warn-after=N, --fail-after=N, --no-time-budget |
Override flow time-budget thresholds (seconds). |
--memory-warn-above=MB, --memory-fail-above=MB, --no-memory-budget, --allocator=fifo\|greedy |
Override memory-budget thresholds and 2D allocator strategy. |
See the documentation site for the full command reference.
8. Documentation
Full documentation is available at wtyd.github.io/githooks, including:
- Getting Started — installation, first config, first hook.
- Configuration Reference — hooks, flows, jobs, options.
- Tools Reference — all keywords for each QA tool.
- CLI Reference — every command with options and examples.
- How-To Guides — parallel execution, CI/CD, frontend tools, etc.
- Migration — from v2, GrumPHP, or CaptainHook.
- Comparison — GitHooks vs GrumPHP vs CaptainHook.
- Changelog — what's new in each version.
9. Contributing
Contributions are welcome! Send a pull request or open an issue. See the Contributing guide.
10. License
The MIT License (MIT). Please see License File for more information.