跳至内容

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您可以通过调用项目目录中提供的二进制文件来指示 Pint 修复代码样式问题vendor/bin

1./vendor/bin/pint

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

1./vendor/bin/pint app/Models
2 
3./vendor/bin/pint app/Models/User.php

Pint 将显示其更新的所有文件的完整列表。您可以-v在调用 Pint 时提供以下选项,以查看 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来自特定目录的,您可以--config在调用 Pint 时提供选项:

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、、、、perpsr12symfonyempty

规则

规则是 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 自动对项目进行 linting,您可以配置GitHub Actions ,使其在新代码推送到 GitHub 时运行 Pint。首先,请确保在“设置”>“操作”>“常规”>“工作流权限”中为 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