Laravel Pint
번역일: 2026년 6월 20일
Laravel Pint
소개
Laravel Pint는 미니멀리스트를 위한 PHP 코드 스타일 자동 교정 도구입니다. PHP-CS-Fixer를 기반으로 만들어졌으며, Laravel의 코딩 스타일 규칙을 따라 코드를 깔끔하고 일관되게 유지할 수 있도록 도와줍니다.
Pint는 새로 생성한 Laravel 애플리케이션에 기본으로 포함되어 있으므로 별도의 설정 없이 바로 사용할 수 있습니다. 기본 상태에서는 설정 파일이 없어도 Laravel의 공식 코딩 스타일에 맞춰 코드를 자동으로 교정합니다.
설치
최신 Laravel 프레임워크에는 Pint가 이미 포함되어 있으므로 별도 설치가 필요하지 않습니다. 다만, 오래된 프로젝트에서는 Composer를 통해 직접 설치할 수 있습니다:
composer require laravel/pint --devPint 실행
프로젝트의 vendor/bin 디렉터리에 있는 pint 바이너리를 실행하면 코드 스타일을 자동으로 교정합니다:
./vendor/bin/pint특정 파일이나 디렉터리만 대상으로 실행할 수도 있습니다:
./vendor/bin/pint app/Models./vendor/bin/pint app/Models/User.phpPint 실행 후에는 수정된 파일 목록이 출력됩니다. -v 옵션을 추가하면 각 파일에서 어떤 변경이 이루어졌는지 더 자세한 내용을 확인할 수 있습니다:
./vendor/bin/pint -v실제로 파일을 수정하지 않고 코드 스타일 오류만 검사하고 싶다면 --test 옵션을 사용하세요. 스타일 오류가 발견되면 0이 아닌 종료 코드를 반환합니다:
./vendor/bin/pint --test특정 Git 브랜치와 비교해서 변경된 파일만 교정하려면 --diff=[브랜치명] 옵션을 사용합니다. CI 환경(예: GitHub Actions)에서 새로 추가되거나 수정된 파일만 검사하므로 실행 시간을 단축할 수 있습니다:
./vendor/bin/pint --diff=mainGit에서 아직 커밋되지 않은 변경 파일만 교정하려면 --dirty 옵션을 사용합니다:
./vendor/bin/pint --dirty코드 스타일 오류를 교정하되, 교정이 발생한 경우 0이 아닌 종료 코드도 함께 반환받고 싶다면 --repair 옵션을 사용합니다. CI에서 "교정이 필요했다"는 사실 자체를 오류로 처리할 때 유용합니다:
./vendor/bin/pint --repairPint 설정
앞서 언급했듯이 Pint는 기본적으로 별도의 설정이 필요하지 않습니다. 하지만 프리셋, 규칙, 검사 대상 폴더를 커스터마이징하고 싶다면 프로젝트 루트 디렉터리에 pint.json 파일을 생성합니다:
{
"preset": "laravel"
}특정 디렉터리에 있는 pint.json 파일을 사용하고 싶다면 --config 옵션으로 경로를 직접 지정할 수 있습니다:
./vendor/bin/pint --config vendor/my-company/coding-style/pint.json프리셋
프리셋은 코드 스타일 교정에 사용할 규칙들의 묶음입니다. 기본값은 Laravel의 코딩 스타일을 따르는 laravel 프리셋이며, --preset 옵션으로 다른 프리셋을 지정할 수 있습니다:
./vendor/bin/pint --preset psr12pint.json 파일에서도 프리셋을 지정할 수 있습니다:
{
"preset": "psr12"
}현재 Pint가 지원하는 프리셋은 laravel, per, psr12, symfony, empty입니다.
규칙
규칙(Rules)은 Pint가 코드 스타일을 교정할 때 따르는 개별 지침입니다. 프리셋은 이러한 규칙들을 미리 묶어놓은 것이므로, 대부분의 프로젝트에서는 프리셋만으로 충분합니다.
그러나 특정 규칙을 직접 활성화하거나 비활성화하고 싶다면 pint.json 파일에서 설정할 수 있습니다. empty 프리셋을 기반으로 규칙을 처음부터 직접 정의하는 것도 가능합니다:
{
"preset": "laravel",
"rules": {
"simplified_null_return": true,
"array_indentation": false,
"new_with_parentheses": {
"anonymous_class": true,
"named_class": true
}
}
}Pint는 PHP-CS-Fixer를 기반으로 하므로, PHP-CS-Fixer가 제공하는 모든 규칙을 사용할 수 있습니다. 사용 가능한 규칙 전체 목록은 PHP-CS-Fixer Configurator에서 확인할 수 있습니다.
파일 / 폴더 제외
기본적으로 Pint는 vendor 디렉터리를 제외한 프로젝트 내 모든 .php 파일을 검사합니다. 추가로 제외할 폴더가 있다면 exclude 옵션을 사용합니다:
{
"exclude": [
"my-specific/folder"
]
}특정 이름 패턴과 일치하는 파일을 모두 제외하려면 notName 옵션을 사용합니다:
{
"notName": [
"*-my-file.php"
]
}정확한 경로로 특정 파일을 제외하려면 notPath 옵션을 사용합니다:
{
"notPath": [
"path/to/excluded-file.php"
]
}지속적 통합(CI)
GitHub Actions
GitHub에 코드를 푸시할 때마다 Pint가 자동으로 실행되도록 설정하려면 GitHub Actions를 활용할 수 있습니다.
먼저 GitHub 저장소의 Settings > Actions > General > Workflow permissions에서 워크플로우에 Read and write permissions를 부여해야 합니다. 그런 다음 아래 내용으로 .github/workflows/lint.yml 파일을 생성합니다:
name: Fix Code Style
on: [push]
jobs:
lint:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
php: [8.4]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: json, dom, curl, libxml, mbstring
coverage: none
- name: Install Pint
run: composer global require laravel/pint
- name: Run Pint
run: pint
- name: Commit linted files
uses: stefanzweifel/git-auto-commit-action@v5이 워크플로우는 코드가 푸시될 때마다 Pint를 실행하고, 교정된 파일이 있으면 자동으로 커밋까지 처리합니다. 워크플로우 권한 설정을 빠뜨리면 자동 커밋 단계에서 오류가 발생하니 반드시 확인하세요.