Laravel Pint 是一個為極簡主義者設計的 PHP 代碼風格修復工具。Pint 建立在 PHP CS Fixer 之上,讓您輕鬆確保代碼風格保持乾淨一致。
Pint 會自動安裝在所有新的 Laravel 應用程式中,因此您可以立即開始使用它。預設情況下,Pint 不需要任何配置,將按照 Laravel 的主觀編碼風格修復代碼風格問題。
Pint 已包含在最新版本的 Laravel 框架中,因此通常不需要安裝。但是,對於舊應用程式,您可以通過 Composer 安裝 Laravel Pint:
composer require laravel/pint --dev
您可以通過調用項目的 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 將返回非零退出碼:
./vendor/bin/pint --test
如果您希望 Pint 只修改與根據 Git 提供的分支不同的檔案,您可以使用 --diff=[branch]
選項。這可以在 CI 環境(如 GitHub actions)中有效使用,以節省時間僅檢查新檔案或修改的檔案:
./vendor/bin/pint --diff=main
如果您希望 Pint 只修改根據 Git 具有未提交更改的文件,您可以使用 --dirty
選項:
./vendor/bin/pint --dirty
如果您希望 Pint 修復任何具有代碼風格錯誤的文件,但如果修復了任何錯誤則退出並顯示非零退出碼,您可以使用 --repair
選項:
./vendor/bin/pint --repair
如前所述,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 將檢查專案中所有的 .php
檔案,但不包括 vendor
目錄中的檔案。如果您希望排除更多資料夾,您可以使用 exclude
組態選項來進行設定:
{
"exclude": [
"my-specific/folder"
]
}
如果您希望排除所有包含特定名稱模式的檔案,您可以使用 notName
組態選項來進行設定:
{
"notName": [
"*-my-file.php"
]
}
如果您想要透過提供檔案的精確路徑來排除一個檔案,您可以使用 notPath
組態選項來進行設定:
{
"notPath": [
"path/to/excluded-file.php"
]
}
要使用 Laravel Pint 自動化專案的程式碼檢查,您可以配置 GitHub Actions 來在將新程式碼推送到 GitHub 時運行 Pint。首先,請確保在 GitHub 的 Settings > Actions > General > Workflow 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