Laravel: Automate Code Formatting!

Pint is one the newest members of Laravel first-party packages and will help us to have more readable and consistent codes.

Installing and Configuring Laravel Pint is so easy and It is built on top of PHP-CS-Fixer so it has tones of rules to fix code style issues. (You don’t need Laravel 9 to use Pint and it’s a zero dependency package)

But running Pint is quite painful because every time we want to push our changes to the remote repository we have to run below command manually:

./vendor/bin/pint --dirty

The --dirty flag will run PHP-CS-Fixer for changed files only. If we want to check styles for all files just remove --dirty flag.

In this article we want to simply automate running code styles check with Pint before committing any changed file so even team developers will have a well defined code structure and don’t need to run Laravel Pint every time before we push our codes to remote repo!

Before we start, be careful this is a very simple setup and you can add as many options as you want to Laravel Pint.

In order to run ./vendor/bin/pint --dirty just before every commit, we should use the pre-commit hook inside .git folder.

First of all we will create a scripts folder inside our root Laravel directory. In this folder we will have a setup.sh file and pre-commit file without any extension.

scripts/
setup.sh
pre-commit

Inside our setup.sh we have:

#! /usr/bin/env bash

cp scripts/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

And write the following lines on pre-commit file:

#! /usr/bin/env bash

echo "Check php code styles..."
echo "Running PHP cs-fixer"
 ./vendor/bin/pint --dirty
 git add .
echo "Done!"

Second of all, we should go to composer.json file and on the scripts object add this line: (If post-install-cmd key does not exist, you should create post-install-cmd part and then add below)

"post-install-cmd": [
            "bash scripts/setup.sh"
        ]

Third of all, we will require Pint package by this:

composer require laravel/pint --dev

And To be sure Don’t Forget to run:

composer install

The composer install command will add the pre-commit hook to our .git folder and after that we are ready to go!

From now on, we can simply write our code and just before we commit our changes the Pint command will run automatically and will fix our code styles!

Pint use Laravel code styles as defaultbut if you want to use psr-12 like me, you can create a pint.json file inside the root directory of your Laravel project and copy below json to have a more opinionated PHP code styles:

{
    "preset": "psr12",
    "rules": {
        "simplified_null_return": true,
        "blank_line_before_statement": {
            "statements": ["return", "try"]
        },
        "binary_operator_spaces": {
            "operators": {
                "=>": "align_single_space_minimal"
            }
        },
        "trim_array_spaces": false,
        "new_with_braces": {
            "anonymous_class": false
        }
    }
}

This is a simple config for our Pint command and will simplify null returns and define an equal indentation for arrays. You can check all PHP-CS-Fixer options here!

READ MORE:

Comments are closed.