givanov95/laravel-git-hooks

Composer plugin that installs a pre-commit git hook into Laravel + Vite projects — runs php-cs-fixer, a debug-statement guard, the Vite build (on frontend changes) and the test suite before each commit. Bypass with --no-verify.

Maintainers

Package info

github.com/givanov95/laravel-git-hooks

Type:composer-plugin

pkg:composer/givanov95/laravel-git-hooks

Statistics

Installs: 15

Dependents: 3

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-05-26 07:56 UTC

This package is auto-updated.

Last update: 2026-05-26 11:03:28 UTC


README

A tiny Composer plugin that wires a pre-commit git hook into your Laravel + Vite projects. On every commit it runs your quality gate; if any step fails, the commit is aborted.

It is intentionally small and self-contained — one bash hook plus a few lines of PHP to install it. The hook is the authoritative source of truth, versioned in this package, so every project that requires it stays in sync.

Heads-up: a local git hook is a fast-feedback gate, not a security boundary — it is trivially bypassed (--no-verify) and only runs for people who have it installed. Pair it with CI (GitHub Actions) for the real, enforced gate.

What the hook runs

Each step is skipped gracefully when its tooling isn't present, so the same hook works across projects with different setups:

  1. php-cs-fixer — formats staged *.php files (needs vendor/bin/php-cs-fixer + a .php-cs-fixer.php / .php-cs-fixer.dist.php config), then re-stages them.
  2. Debug-statement guard — blocks the commit if staged *.php/*.vue/*.js/*.ts files contain console.log(, dd( or dump(.
  3. Vite build — runs npm run build only when frontend files are staged and a build script exists in package.json.
  4. Tests — runs php artisan test (or vendor/bin/phpunit).

Installation

composer require --dev givanov95/laravel-git-hooks

That's it. The plugin installs the hook into .git/hooks/pre-commit after install/update. Because it's a plugin, Composer will ask you to trust it the first time (or add it to allow-plugins in your project's composer.json):

{
    "config": {
        "allow-plugins": {
            "givanov95/laravel-git-hooks": true
        }
    }
}

If a hand-written pre-commit already exists, it is backed up to pre-commit.local.bak.

Manual install (plugins disabled)

vendor/bin/laravel-git-hooks

Bypassing & skipping

Goal How
Skip everything for one commit git commit --no-verify
Skip every step (keep the hook) SKIP_HOOK=1 git commit ...
Skip just the build SKIP_BUILD=1 git commit ...
Skip just the tests SKIP_TESTS=1 git commit ...
Skip php-cs-fixer SKIP_CSFIXER=1 git commit ...

Requirements

  • PHP ^8.3
  • Composer ^2.0
  • Git, and (per step) bash, npm, your project's php artisan / phpunit

License

MIT © Georgi Ivanov