Laravel Pint
소개
Laravel Pint는 미니멀리스트를 위한 독단적인 PHP 코드 스타일 수정 도구입니다. Pint는 PHP-CS-Fixer를 기반으로 구축되었으며, 코드 스타일을 깔끔하고 일관되게 유지하는 것을 간편하게 만들어 줍니다.
Pint는 모든 새로운 Laravel 애플리케이션에 자동으로 설치되므로 즉시 사용할 수 있습니다. 기본적으로 Pint는 별도의 구성이 필요하지 않으며 Laravel의 독단적인 코딩 스타일을 따르면서 코드의 스타일 문제를 수정합니다.
설치
Pint는 Laravel 프레임워크의 최신 릴리스에 포함되어 있으므로 일반적으로 설치할 필요가 없습니다. 그러나 이전 애플리케이션의 경우 Composer를 통해 Laravel Pint를 설치할 수 있습니다.
composer require laravel/pint --dev
Pint 실행
프로젝트의 vendor/bin 디렉터리에서 사용할 수 있는 pint 바이너리를 호출하여 Pint가 코드 스타일 문제를 수정하도록 지시할 수 있습니다.
./vendor/bin/pint
특정 파일 또는 디렉터리에서 Pint를 실행할 수도 있습니다.
./vendor/bin/pint app/Models ./vendor/bin/pint app/Models/User.php
Pint는 업데이트된 모든 파일의 자세한 목록을 표시합니다. Pint를 호출할 때 -v 옵션을 제공하여 Pint의 변경 사항에 대한 더 자세한 내용을 볼 수 있습니다.
./vendor/bin/pint -v
Pint가 실제로 파일을 변경하지 않고 스타일 오류에 대해 코드만 검사하도록 하려면 --test 옵션을 사용할 수 있습니다. 코드 스타일 오류가 발견되면 Pint는 0이 아닌 종료 코드를 반환합니다.
./vendor/bin/pint --test
Git에 따라 커밋되지 않은 변경 사항이 있는 파일만 Pint가 수정하도록 하려면 --dirty 옵션을 사용할 수 있습니다.
./vendor/bin/pint --dirty
Pint가 코드 스타일 오류가 있는 파일을 수정하되 오류가 수정된 경우 0이 아닌 종료 코드로 종료되도록 하려면 --repair 옵션을 사용할 수 있습니다.
./vendor/bin/pint --repair
Pint 구성하기
앞서 언급했듯이 Pint는 어떠한 구성도 필요하지 않습니다. 하지만 프리셋, 규칙 또는 검사된 폴더를 사용자 정의하려면 프로젝트의 루트 디렉터리에 pint.json 파일을 생성하면 됩니다.
{ "preset": "laravel"}
또한 특정 디렉터리의 pint.json을 사용하려면 Pint를 호출할 때 --config 옵션을 제공하면 됩니다.
./vendor/bin/pint --config vendor/my-company/coding-style/pint.json
프리셋
프리셋은 코드에서 코드 스타일 문제를 해결하는 데 사용할 수 있는 규칙 집합을 정의합니다. 기본적으로 Pint는 Laravel의 주관적인 코딩 스타일을 따르는 문제를 해결하는 laravel 프리셋을 사용합니다. 그러나 Pint에 --preset 옵션을 제공하여 다른 프리셋을 지정할 수 있습니다.
./vendor/bin/pint --preset psr12
원하는 경우 프로젝트의 pint.json 파일에 프리셋을 설정할 수도 있습니다.
{ "preset": "psr12"}
Pint에서 현재 지원하는 프리셋은 laravel, per, psr12, symfony, empty입니다.
규칙
규칙은 Pint가 코드에서 코드 스타일 문제를 해결하는 데 사용할 스타일 지침입니다. 위에서 언급했듯이 프리셋은 대부분의 PHP 프로젝트에 완벽해야 하는 미리 정의된 규칙 그룹이므로 일반적으로 포함된 개별 규칙에 대해 걱정할 필요가 없습니다.
그러나 원하는 경우 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 Configurator.
파일/폴더 제외하기
기본적으로 Pint는 vendor 디렉토리를 제외한 프로젝트의 모든 .php 파일을 검사합니다. 더 많은 폴더를 제외하려면 exclude 구성 옵션을 사용하면 됩니다:
{ "exclude": [ "my-specific/folder" ]}
주어진 이름 패턴을 포함하는 모든 파일을 제외하려면 notName 구성 옵션을 사용하면 됩니다:
{ "notName": [ "*-my-file.php" ]}
파일에 대한 정확한 경로를 제공하여 파일을 제외하려면 notPath 구성 옵션을 사용하면 됩니다:
{ "notPath": [ "path/to/excluded-file.php" ]}
지속적 통합
GitHub Actions
Laravel Pint를 사용하여 프로젝트 린팅을 자동화하려면 새 코드가 GitHub로 푸시될 때마다 Pint를 실행하도록 GitHub Actions를 구성할 수 있습니다. 먼저 GitHub의 설정 > 액션 > 일반 > 워크플로우 권한에서 워크플로우에 "읽기 및 쓰기 권한"을 부여해야 합니다. 그런 다음 다음 내용으로 .github/workflows/lint.yml 파일을 생성합니다.
name: 코드 스타일 수정 on: [push] jobs: lint: runs-on: ubuntu-latest strategy: fail-fast: true matrix: php: [8.3] steps: - name: 코드 체크아웃 uses: actions/checkout@v4 - name: PHP 설정 uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: json, dom, curl, libxml, mbstring coverage: none - name: Pint 설치 run: composer global require laravel/pint - name: Pint 실행 run: pint - name: 린트된 파일 커밋 uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: "코드 스타일 수정"