Pint
Laravel Pint
介绍
Laravel Pint 是一个为极简主义者设计的 PHP 代码风格修复工具。Pint 构建在 PHP CS Fixer 之上,使确保代码风格保持干净和一致变得简单。
Pint 会随所有新的 Laravel 应用自动安装,因此你可以立即开始使用。默认情况下,Pint 不需要任何配置,它会按照 Laravel 的规范化编码风格修复你的代码中的样式问题。
安装
Pint 已包含在 Laravel 框架的近期版本中,因此通常无需安装。但对于旧的应用程序,你可以通过 Composer 安装 Laravel Pint:
composer require laravel/pint --dev
运行 Pint
你可以通过调用项目 vendor/bin
目录下的 pint
可执行文件来修复代码样式问题:
./vendor/bin/pint
你也可以只对特定文件或目录运行 Pint:
./vendor/bin/pint app/Models
./vendor/bin/pint app/Models/User.php
Pint 会显示它更新的所有文件的详细列表。通过在调用 Pint 时提供 -v
选项,你可以看到 Pint 变更的更多细节:
./vendor/bin/pint -v
如果你希望 Pint 仅检查代码中的风格错误而不实际修改文件,可以使用 --test
选项。如果发现任何代码风格错误,Pint 将返回非零退出码:
./vendor/bin/pint --test
如果你希望 Pint 只修改与提供的 Git 分支不同的文件,可以使用 --diff=[branch]
选项。这在 CI 环境中(例如 GitHub Actions)非常有效,可以节省时间,只检查新增或修改的文件:
./vendor/bin/pint --diff=main
如果你希望 Pint 只修改 Git 中有未提交更改的文件,可以使用 --dirty
选项:
./vendor/bin/pint --dirty
如果你希望 Pint 修复任何有代码风格错误的文件,但如果修复了任何错误仍然返回非零退出码,可以使用 --repair
选项:
./vendor/bin/pint --repair
配置 Pint
如前所述,Pint 不需要任何配置。但是,如果你希望自定义预设、规则或检查的文件夹,可以在项目根目录创建一个 pint.json
文件:
{
"preset": "laravel"
}
此外,如果你希望使用特定目录下的 pint.json
文件,可以在调用 Pint 时提供 --config
选项:
./vendor/bin/pint --config vendor/my-company/coding-style/pint.json
预设(Presets)
预设定义了一组规则,可用于修复代码中的风格问题。默认情况下,Pint 使用 laravel
预设,它按照 Laravel 的规范化编码风格修复问题。但是,你可以通过向 Pint 提供 --preset
选项来指定不同的预设:
./vendor/bin/pint --preset psr12
如果你希望,也可以在项目的 pint.json
文件中设置预设(preset):
{
"preset": "psr12"
}
Pint 当前支持的预设有:laravel
、per
、psr12
、symfony
和 empty
。
规则(Rules)
规则是 Pint 用来修复代码风格问题的风格指导。如前所述,预设是预定义的一组规则,对于大多数 PHP 项目来说已经足够,因此通常你无需关心它们包含的具体规则。
但是,如果你愿意,你可以在 pint.json
文件中启用或禁用特定规则,或者使用 empty
预设从零定义规则:
{
"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 配置工具。
排除文件 / 文件夹(Excluding Files / Folders)
默认情况下,Pint 会检查项目中所有 .php
文件,但会排除 vendor
目录。如果你希望排除更多文件夹,可以使用 exclude
配置选项:
{
"exclude": [
"my-specific/folder"
]
}
如果你希望排除所有包含某个名称模式的文件,可以使用 notName
配置选项:
{
"notName": [
"*-my-file.php"
]
}
如果你希望通过提供文件的 精确路径 来排除某个文件,可以使用 notPath
配置选项:
{
"notPath": [
"path/to/excluded-file.php"
]
}
持续集成
GitHub Actions
为了自动使用 Laravel Pint 对你的项目进行代码风格检查,你可以配置 GitHub Actions,让 Pint 在每次向 GitHub 推送新代码时自动运行。首先,确保在 GitHub 中为工作流授予“读取和写入权限”,路径为 Settings > Actions > General > Workflow permissions。然后,创建一个 .github/workflows/lint.yml
文件,内容如下:
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
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: