Skip to content
虚位以待
赞助商
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待
虚位以待

Laravel Pint

介绍

Laravel Pint 是一个为极简主义者设计的意见化 PHP 代码风格修复工具。Pint 基于 PHP-CS-Fixer 构建,使您能够轻松确保代码风格保持干净和一致。

Pint 在所有新的 Laravel 应用程序中自动安装,因此您可以立即开始使用它。默认情况下,Pint 不需要任何配置,并将通过遵循 Laravel 的意见化编码风格来修复代码风格问题。

安装

Pint 包含在最近版本的 Laravel 框架中,因此通常不需要安装。然而,对于较旧的应用程序,您可以通过 Composer 安装 Laravel Pint:

shell
composer require laravel/pint --dev

运行 Pint

您可以通过调用项目的 vendor/bin 目录中的 pint 二进制文件来指示 Pint 修复代码风格问题:

shell
./vendor/bin/pint

您还可以在特定文件或目录上运行 Pint:

shell
./vendor/bin/pint app/Models

./vendor/bin/pint app/Models/User.php

Pint 将显示所有更新文件的详细列表。您可以通过在调用 Pint 时提供 -v 选项来查看有关 Pint 更改的更多详细信息:

shell
./vendor/bin/pint -v

如果您希望 Pint 仅检查代码中的风格错误而不实际更改文件,可以使用 --test 选项。如果发现任何代码风格错误,Pint 将返回非零退出代码:

shell
./vendor/bin/pint --test

如果您希望 Pint 只修改与提供的分支相比有差异的文件,可以使用 --diff=[branch] 选项。这在您的 CI 环境(例如 GitHub Actions)中非常有效,可以通过只检查新增或修改过的文件来节省时间:

shell
./vendor/bin/pint --diff=main

如果您希望 Pint 仅修改根据 Git 具有未提交更改的文件,可以使用 --dirty 选项:

shell
./vendor/bin/pint --dirty

如果您希望 Pint 修复任何具有代码风格错误的文件,但在修复任何错误时也退出并返回非零退出代码,可以使用 --repair 选项:

shell
./vendor/bin/pint --repair

配置 Pint

如前所述,Pint 不需要任何配置。然而,如果您希望自定义预设、规则或检查的文件夹,可以通过在项目的根目录中创建 pint.json 文件来实现:

json
{
  "preset": "laravel"
}

此外,如果您希望使用来自特定目录的 pint.json,可以在调用 Pint 时提供 --config 选项:

shell
./vendor/bin/pint --config vendor/my-company/coding-style/pint.json

预设

预设定义了一组规则,可用于修复代码中的风格问题。默认情况下,Pint 使用 laravel 预设,该预设通过遵循 Laravel 的意见化编码风格来修复问题。然而,您可以通过向 Pint 提供 --preset 选项来指定不同的预设:

shell
./vendor/bin/pint --preset psr12

如果您愿意,您还可以在项目的 pint.json 文件中设置预设:

json
{
  "preset": "psr12"
}

Pint 当前支持的预设有:laravelperpsr12symfonyempty

规则

规则是 Pint 用于修复代码风格问题的风格指南。如上所述,预设是预定义的规则组,适合大多数 PHP 项目,因此您通常不需要担心它们包含的具体规则。

然而,如果您愿意,可以在 pint.json 文件中启用或禁用特定规则,或者使用 empty 预设并从头定义规则:

json
{
  "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 配置选项:

json
{
  "exclude": ["my-specific/folder"]
}

如果您希望排除所有包含给定名称模式的文件,可以使用 notName 配置选项:

json
{
  "notName": ["*-my-file.php"]
}

如果您希望通过提供文件的确切路径来排除文件,可以使用 notPath 配置选项:

json
{
  "notPath": ["path/to/excluded-file.php"]
}

持续集成

GitHub Actions

要使用 Laravel Pint 自动化检查项目,您可以配置 GitHub Actions 在每次将新代码推送到 GitHub 时运行 Pint。首先,请确保在 GitHub 的 设置 > 操作 > 常规 > 工作流权限 中授予工作流“读取和写入权限”。然后,创建一个 .github/workflows/lint.yml 文件,内容如下:

yaml
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