Laravel Pint
簡介
Laravel Pint 是一個主觀的 PHP 程式碼風格修復工具,專為極簡主義者設計。Pint 建構於 PHP CS Fixer 之上,讓確保您的程式碼風格保持整潔和一致變得簡單。
Pint 會自動安裝在所有新的 Laravel 應用程式中,因此您可以立即開始使用它。預設情況下,Pint 不需要任何設定,並將按照 Laravel 的主觀程式碼風格修正您程式碼中的程式碼風格問題。
安裝
Pint 已包含在 Laravel 框架的最新版本中,因此通常不需要安裝。但是,對於較舊的應用程式,您可以透過 Composer 安裝 Laravel Pint
1composer require laravel/pint --dev
執行 Pint
您可以指示 Pint 修正程式碼風格問題,方法是調用專案的 vendor/bin
目錄中提供的 pint
二進制檔案
1./vendor/bin/pint
您也可以在特定的檔案或目錄上執行 Pint
1./vendor/bin/pint app/Models2 3./vendor/bin/pint app/Models/User.php
Pint 將顯示它更新的所有檔案的完整列表。您可以透過在調用 Pint 時提供 -v
選項,查看有關 Pint 變更的更多詳細資訊
1./vendor/bin/pint -v
如果您希望 Pint 僅檢查您的程式碼是否存在風格錯誤,而實際上不變更檔案,您可以使用 --test
選項。如果找到任何程式碼風格錯誤,Pint 將傳回非零的退出代碼
1./vendor/bin/pint --test
如果您希望 Pint 僅修改根據 Git 與提供的分支不同的檔案,您可以使用 --diff=[branch]
選項。這可以在您的 CI 環境(如 GitHub actions)中有效地使用,以僅檢查新的或修改過的檔案來節省時間
1./vendor/bin/pint --diff=main
如果您希望 Pint 僅修改根據 Git 具有未提交變更的檔案,您可以使用 --dirty
選項
1./vendor/bin/pint --dirty
如果您希望 Pint 修正任何具有程式碼風格錯誤的檔案,但如果修正了任何錯誤,也以非零的退出代碼退出,您可以使用 --repair
選項
1./vendor/bin/pint --repair
設定 Pint
如前所述,Pint 不需要任何設定。但是,如果您希望自訂預設配置、規則或檢查的資料夾,您可以透過在專案的根目錄中建立一個 pint.json
檔案來完成
1{2 "preset": "laravel"3}
此外,如果您希望使用來自特定目錄的 pint.json
,您可以在調用 Pint 時提供 --config
選項
1./vendor/bin/pint --config vendor/my-company/coding-style/pint.json
預設配置
預設配置定義了一組可用於修正程式碼風格問題的規則。預設情況下,Pint 使用 laravel
預設配置,該配置透過遵循 Laravel 的主觀程式碼風格來修正問題。但是,您可以透過向 Pint 提供 --preset
選項來指定不同的預設配置
1./vendor/bin/pint --preset psr12
如果您願意,您也可以在專案的 pint.json
檔案中設定預設配置
1{2 "preset": "psr12"3}
Pint 目前支援的預設配置有:laravel
、per
、psr12
、symfony
和 empty
。
規則
規則是 Pint 將用於修正程式碼風格問題的風格指南。如上所述,預設配置是預定義的規則組,對於大多數 PHP 專案來說應該是完美的,因此您通常不需要擔心它們包含的個別規則。
但是,如果您願意,您可以在 pint.json
檔案中啟用或停用特定規則,或使用 empty
預設配置並從頭開始定義規則
1{ 2 "preset": "laravel", 3 "rules": { 4 "simplified_null_return": true, 5 "array_indentation": false, 6 "new_with_parentheses": { 7 "anonymous_class": true, 8 "named_class": true 9 }10 }11}
Pint 建構於 PHP CS Fixer 之上。因此,您可以使用它的任何規則來修正專案中的程式碼風格問題:PHP CS Fixer Configurator。
排除檔案 / 資料夾
預設情況下,Pint 將檢查專案中的所有 .php
檔案,但 vendor
目錄中的檔案除外。如果您希望排除更多資料夾,您可以使用 exclude
設定選項來完成
1{2 "exclude": [3 "my-specific/folder"4 ]5}
如果您希望排除所有包含給定名稱模式的檔案,您可以使用 notName
設定選項來完成
1{2 "notName": [3 "*-my-file.php"4 ]5}
如果您想透過提供檔案的確切路徑來排除檔案,您可以使用 notPath
設定選項來完成
1{2 "notPath": [3 "path/to/excluded-file.php"4 ]5}
持續整合
GitHub Actions
為了使用 Laravel Pint 自動化專案的程式碼風格檢查,您可以設定 GitHub Actions,以便在將新程式碼推送到 GitHub 時執行 Pint。首先,請務必在 GitHub 上的 設定 > Actions > 一般 > 工作流程權限 中授予工作流程「讀取和寫入權限」。然後,建立一個包含以下內容的 .github/workflows/lint.yml
檔案
1name: Fix Code Style 2 3on: [push] 4 5jobs: 6 lint: 7 runs-on: ubuntu-latest 8 strategy: 9 fail-fast: true10 matrix:11 php: [8.4]12 13 steps:14 - name: Checkout code15 uses: actions/checkout@v416 17 - name: Setup PHP18 uses: shivammathur/setup-php@v219 with:20 php-version: ${{ matrix.php }}21 extensions: json, dom, curl, libxml, mbstring22 coverage: none23 24 - name: Install Pint25 run: composer global require laravel/pint26 27 - name: Run Pint28 run: pint29 30 - name: Commit linted files31 uses: stefanzweifel/git-auto-commit-action@v5