/LaravelGitHooks

:boom: A package for running artisan commands as git hooks in your laravel projects. Ships with phpunit, phpcs, and eslint :fishing_pole_and_fish:

Primary LanguagePHPMIT LicenseMIT

Laravel Git Hooks

Laravel Git Hooks

This is a community project and not an "official" Laravel one

Latest Stable Version Total Downloads License Build Status

This package provides a way to add custom git hooks to your laravel project. Easily configure any command to be fired throughout the git-hook process. Want to ensure that all tests pass before a bad commit is pushed? Now's your chance!

Currently, the following git hooks are supported:

  • pre-commit
  • prepare-commit-msg
  • pre-push
  • post-checkout

Install

Via Composer

$ composer require mr-feek/laravel-git-hooks --dev

Edit your laravel project's composer.json so that these hooks are installed for every developer after they use composer.

"post-autoload-dump": [
    ...
    "@php artisan hooks:install"
]

Configuration

  • Publish this package's configuration file: php artisan vendor:publish --provider="Feek\LaravelGitHooks\LaravelGitHooksServiceProvider"
  • Register specific artisan commands to be run in the configuration array. For example, all commands nested within the pre-commit array key will be run prior to a git commit. All commands nested within the pre-push array key will be run prior to a git push. If any of these registered commands fail, then the git action will be prevented.
<?php
return [
    'commit-msg' => [
        //
    ],
    'pre-commit' => [
        'php artisan hooks:phpcs --diff --proxiedArguments="-p -n --standard=PSR2"',
        'php artisan hooks:eslint --diff --proxiedArguments="--fix --quiet"',
    ],
    'pre-push' => [
        './vendor/bin/phpunit'
    ],
    'post-checkout' => [
        'php artisan hooks:install-deps'
    ],
    'prepare-commit-msg' => [
        'php artisan hooks:semantic-commits',
    ],
];

Commands

This package ships with several handy artisan commands which work nicely as git hooks. The following commands come included:

  • phpcs
  • phpcbf
  • phpstan
  • install dependencies (composer, yarn, npm)
  • eslint
  • semantic commit messages

Sniffer Commands

The PHPCS, PHPCBF, PHPSTAN, and ESLINT commands all allow you to pass arguments to the underlying process being executed. You can utilize this via the --proxiedArguments flag. In the code examples above, the following phpcs command will be executed: phpcs -p -n --standard=PSR2

Supported Versions Of Laravel

Laravel ^5.5 is actively supported. Need support for earlier versions of Laravel? Feel free to open a PR

Change log

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING and CODE_OF_CONDUCT for details.

Wondering how to go about working on a laravel package? See http://laraveldaily.com/how-to-create-a-laravel-5-package-in-10-easy-steps/ and https://laravel.com/docs/5.5/packages

Credits

License

The MIT License (MIT). Please see License File for more information