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 自动化 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: 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