lform / pretty-code
Lform code formatting configurations
Package info
Language:JavaScript
Type:packages
pkg:composer/lform/pretty-code
Requires
- php: ^8.1
This package is auto-updated.
Last update: 2026-04-20 20:35:03 UTC
README
Pretty Code enforces consistent code formatting across all your projects automatically on commit. It provides a single source of truth for Prettier and Laravel Pint configurations, designed for Roots Bedrock + Sage and Statamic projects.
Table of Contents
- Requirements
- Installation & Setup
- Commands
- Updating
- PHP Formatting
- Supported File Types
- Configuration Files
- Customization per Project
- Troubleshooting
- Uninstalling
Requirements
- Environments: OSX, Linux, WSL, Windows
- Node 20+
- PHP 8.1+ (for PHP formatting)
Installation & Setup
Installation
npm install --save-dev @lform/pretty-code
After installing, the package prints a reminder to run the init command.
Initialization
npx pretty-code init
Run the init command to scaffold the project. It copies the following config files to the project root, configures git hooks, and adds pretty:format, pretty:format:prettier, pretty:format:pint, and pretty:check scripts to package.json:
.prettierrc.json,.prettierignore.lintstagedrc.json.editorconfig.githooks/pint.json
Existing config files are overwritten — use git diff to review changes before committing. Pass --suggest to write new configs as suggestion files alongside your existing ones instead. In --suggest mode, Pretty Code does not update your git hooks path or rewrite package.json scripts:
npx pretty-code init --suggest
This writes:
.lintstagedrc.suggestions.json.prettierrc.suggestions.json.prettierignore.suggestions.editorconfig.suggestionspint.suggestions.json.githooks.suggestions/
Commands
# Run all formatters npm run pretty:format # Prettier only — JS, CSS, HTML, Blade, Antlers, JSON, YAML, etc. npm run pretty:format:prettier # Pint only — PHP files npm run pretty:format:pint # Check formatting without writing (useful in CI) npm run pretty:check
Updating
When a new version of Pretty Code is released, update the package then run:
npm update @lform/pretty-code npx pretty-code update
This overwrites your config files with the latest package versions. Use git diff to review and selectively revert any changes you want to keep. Pass --suggest to write updated configs as .suggestions.* files instead:
npx pretty-code update --suggest
PHP Formatting
Laravel Pint (recommended)
Laravel Pint is the recommended PHP formatter and is included by default in both Roots Bedrock + Sage and Statamic — no separate install needed for those projects. The pint.json config file is copied to your project root during init.
PHP CS Fixer (alternative)
For projects that cannot use Laravel Pint, a .php-cs-fixer.php baseline configuration is included in the package as a reference. To use it:
- Install PHP CS Fixer:
composer require --dev friendsofphp/php-cs-fixer
- Copy the baseline config to your project root:
cp node_modules/@lform/pretty-code/.php-cs-fixer.php .php-cs-fixer.php
- Update
.lintstagedrc.jsonto replace the Pint rule with PHP CS Fixer:
"*.php": "vendor/bin/php-cs-fixer fix"
- Update the
pretty:format:pintscript inpackage.json:
"pretty:format:pint": "vendor/bin/php-cs-fixer fix"
Supported File Types
| Extension | Tool |
|---|---|
php |
Pint |
blade.php |
Prettier |
antlers.html, antlers.php |
Prettier |
js, jsx, ts, tsx |
Prettier |
css, scss, pcss |
Prettier |
html, htm |
Prettier |
json |
Prettier |
yaml, yml |
Prettier |
Configuration Files
| File | Description |
|---|---|
.prettierrc.json |
Prettier configuration |
.prettierignore |
Files excluded from Prettier |
.lintstagedrc.json |
Pre-commit hook rules |
.editorconfig |
Editor-wide formatting defaults |
.githooks/ |
Git hook scripts |
pint.json |
Laravel Pint configuration |
.php-cs-fixer.php |
PHP CS Fixer baseline (reference — copy manually if needed) |
Customization Per Project
To customize formatting for a specific project, copy the relevant config file from node_modules/@lform/pretty-code/ to the project root and modify it as needed. Only copy what you need — copied files will no longer receive updates from the package manager.
To undo a customization, delete the project-level config file and it will fall back to the package default.
Troubleshooting
Disconnecting & Reconnecting the Git Hook
If you need to disable or re-enable the automated pre-commit hook:
# Disable: git config core.hooksPath ".git/hooks" # Re-enable: git config core.hooksPath ".githooks"
Uninstalling
- Delete any config files copied to the project root
- Delete the
.githooksdirectory - Run
git config core.hooksPath .git/hooks - Run
npm remove @lform/pretty-code - Remove the
pretty:format,pretty:format:prettier,pretty:format:pint, andpretty:checkscripts frompackage.json