跳到內容

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/Models
2 
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 目前支援的預設配置有:laravelperpsr12symfonyempty

規則

規則是 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: true
10 matrix:
11 php: [8.4]
12 
13 steps:
14 - name: Checkout code
15 uses: actions/checkout@v4
16 
17 - name: Setup PHP
18 uses: shivammathur/setup-php@v2
19 with:
20 php-version: ${{ matrix.php }}
21 extensions: json, dom, curl, libxml, mbstring
22 coverage: none
23 
24 - name: Install Pint
25 run: composer global require laravel/pint
26 
27 - name: Run Pint
28 run: pint
29 
30 - name: Commit linted files
31 uses: stefanzweifel/git-auto-commit-action@v5

Laravel 是最有效率的方式來
建構、部署和監控軟體。