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/Models2 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
、、、、和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 自动对项目进行 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: 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