Appearance
Code formatting
Laravel Pint and Prettier are tools to ensure consistent code formatting.
Use of these tools is required for all new projects.
Prerequisites
Install Prettier and the necessary plugins:
shell
yarn add --dev prettier prettier-plugin-blade prettier-plugin-tailwindcss @trivago/prettier-plugin-sort-importsFormatting PHP with Pint
Pint is installed by default in new Laravel projects. If needed, you can install it with Composer:
shell
composer require --dev laravel/pintComposer script
It is recommended to create a format Composer script by adding the following to the scripts section of composer.json:
json
{
"scripts": {
"format": "@php vendor/bin/pint --parallel"
}
}Run as follows:
shell
composer formatTIP
--parallel requires Pint 1.24.0 or later. For older versions, omit this flag.
Formatting Blade with Pint
Pint now supports formatting Blade templates via Prettier, using prettier-plugin-blade and prettier-plugin-tailwindcss from the prerequisites above.
Create a pint.json file and enable the Pint/laravel_blade rule:
json
{
"rules": {
"Pint/laravel_blade": true
}
}WARNING
At the time of writing, Pint uses its own bundled Prettier config for this rule, ignoring any project-specific configuration files such as .prettierrc.
Formatting JS/TS/CSS/Vue with Prettier
Create a .prettierrc file with the following contents:
json
{
"plugins": ["prettier-plugin-tailwindcss", "@trivago/prettier-plugin-sort-imports"],
"printWidth": 120,
"singleAttributePerLine": true,
"singleQuote": true,
"tabWidth": 4,
"trailingComma": "all"
}TIP
prettier-plugin-blade is deliberately omitted from plugins. Blade formatting is handled by Pint (see above), not by running Prettier directly.
Yarn script
It is recommended to add a format script to the scripts section of package.json:
json
{
"scripts": {
"format": "prettier --log-level warn --write resources/**/*"
}
}Run as follows:
shell
yarn formatThis can be appended to the composer format script as follows:
json
{
"scripts": {
"format": "@php vendor/bin/pint --parallel"
"format": [
"@php vendor/bin/pint --parallel",
"corepack yarn format"
]
}
}Formatting on save
Running the format scripts manually is fine, but it's worth configuring your editor to format automatically as you work. Because Pint owns Blade files and Prettier owns JS/TS/CSS, make sure each tool is only wired up to run on the files it's actually responsible for.
PHPStorm
- Pint — go to Settings | PHP | Quality Tools | Laravel Pint and set the path to
vendor/bin/pint. Then go to Settings | Tools | Actions on Save and enable Run Laravel Pint. - Prettier — go to Settings | Languages & Frameworks | JavaScript | Prettier, set the Prettier package to the one installed in
node_modules, and set Run for files to**/*.{css,js,ts,vue}. Enable On save.
VS Code
Pint — install the Laravel Pint extension, then add to
.vscode/settings.json:json{ "editor.formatOnSave": true, "[php]": { "editor.defaultFormatter": "open-southeast-asia.laravel-pint" } }Prettier — install the Prettier - Code formatter extension, then add:
json{ "editor.formatOnSave": true, "[css][javascript][typescript][vue]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } }