Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Grumphp Laravel Package

phpro/grumphp

GrumPHP is a Composer plugin that installs Git hooks to run quality checks on every commit. It executes configured tasks like tests and linters, blocks failing commits, and helps teams enforce coding standards and best practices automatically.

View on GitHub
Deep Wiki
Context7

Installation with an exotic project structure

By default, GrumPHP` is trying to auto-discover a lot of possible project structures. If for some reason GrumPHP is not able to find everything, you can help it out. Here are some possible solutions:

Register paths in your composer file

High priority: Composer settings will be used when no environment variables are set.

You can manipulate how GrumPHP works based on settings in your composer file:

# composer.json
{
    "extra": {
        "grumphp": {
            "config-default-path": "path/to/grumphp.yml",
            "project-path": "path/to/your/project/folder",
            "disable-plugin": false
        }
    }
}

config-default-path

Default: null

The path to your Grumphp configuration file.

project-path

Default: null

The path to the root of your project. This must be a subdirectory of your git working directory.

When your application has a project structure that is not covered by the default configuration settings, you will have to create a grumphp.yml before installing the package and add next config into your application's composer.json:

All parameters above are optional. After changing a parameter, you might want to re-initialize your git hooks:

php ./vendor/bin/grumphp git:init

disable-plugin

Default: false

In some cases, you don't want composer to initialise GrumPHP automatically. For example: on global installations activating the plugin is questionable. Luckily you can opt-out on this behaviour.

Changing paths by using environment variables

Highest priority: Environment variables will always be used when available.

You can set one or multiple of the environment variables below. Paths can be absolute or relative against current working directory. You can also set these variables directly in your git hook. However, this might require a custom hook template.

GRUMPHP_PROJECT_DIR=...
GRUMPHP_GIT_WORKING_DIR=....
GRUMPHP_GIT_REPOSITORY_DIR=...
GRUMPHP_COMPOSER_DIR=...
GRUMPHP_BIN_DIR=...
PATH=/additional/bin/dirs:$PATH

GRUMPHP_PROJECT_DIR

Default: null

The path to the root of your project. This must be a subdirectory of your git working directory.

GRUMPHP_GIT_WORKING_DIR

Default: null

The path to the root directory of your git project.

GRUMPHP_GIT_REPOSITORY_DIR

Default: null

The path to the directory in which git stores it objects etc. Most of the time this is the .git folder. When using GIT submodules, this is the location of the submodule .git folder.

GRUMPHP_COMPOSER_DIR

Default: null

The directory in which your composer.json file is available.

GRUMPHP_BIN_DIR

Default: null

The directory in which the executables installed by composer are located.

PATH

Default: system specific

If you want to support multiple bin directories, you can prepend them to your path variable.

Environment variables

It is also possible to set some of the environment variables above inside the grumphp.yml file directly:

# grumphp.yml
grumphp:
    environment:
    variables:
        GRUMPHP_PROJECT_DIR: "..."
        GRUMPHP_GIT_WORKING_DIR: "..."
        GRUMPHP_GIT_REPOSITORY_DIR: "..."
        GRUMPHP_BIN_DIR: "..."
    paths:
        - 'tools'

The configuration from inside the grumphp.yml file will be loaded if the guessing system was able to determine an initial version of the guessed paths. This is required because GrumPHP tries to guess its config file based on all the parameters above. Once the config is loaded, it does a second guess based on environment variables that were detected inside the grumphp.yml file.

Running GrumPHP with a custom config file

Highest priority: When adding a config CLI attribute, this will always be used.

In some situations, you might want to use a different GrumPHP configuration file. You can switch configuration by using the --config parameter that is available on the CLI.

php ./vendor/bin/grumphp git:init --config='custom/grumphp.yml'
php ./vendor/bin/grumphp run --config='custom/grumphp.yml'
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
cadot.eu/make
besmartand-pro/php-quality-config
sentix/ai-chatbot
codifyo/ts-generator-bundle
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky