跳到内容

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 自动化 lint 您的项目,您可以配置 GitHub Actions 以在每次将新代码推送到 GitHub 时运行 Pint。首先,请务必在 Settings > Actions > General > Workflow permissions 中向 GitHub 中的工作流程授予“读取和写入权限”。然后,创建一个包含以下内容的 .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