什么是 Laravel Pint
Laravel Pint 是基于 PHP CS Fixer 构建的代码风格自动修复工具。它以「无需配置即可上手」为目标进行设计,会依照 Laravel 编码风格自动格式化代码。 将团队开发中常见的「代码风格 review 评论」自动化,可以让大家专注于更本质的代码评审。安装
新创建的 Laravel 应用中已经默认安装了 Pint。对于旧版本项目,可以通过 Composer 安装。运行方式
基本用法
自动修复项目中所有的.php 文件。
选项一览
| 选项 | 说明 |
|---|---|
--test | 不修改文件,仅检测风格错误。若存在错误则返回非零退出码 |
--dirty | 只对 Git 中未提交的文件进行处理 |
--diff=[branch] | 只处理与指定分支有差异的文件 |
--repair | 修复风格错误的同时,若产生修复则返回非零退出码 |
--parallel | 并行执行模式(实验性),提升性能 |
--max-processes=4 | 与 --parallel 一起使用,指定最大进程数 |
-v | 显示修改的详细信息 |
--config | 指定要使用的 pint.json 路径 |
--preset | 指定要使用的预设 |
配置
在项目根目录创建pint.json 可以自定义行为。
预设
预设即一组规则的集合。默认是laravel 预设,包含最适合 Laravel 项目的规则。
| 预设 | 说明 |
|---|---|
laravel | Laravel 推荐的编码风格(默认) |
psr12 | PSR-12 编码标准 |
per | PER Coding Style |
symfony | Symfony 编码风格 |
empty | 不带任何规则,可自行逐条定义 |
自定义规则
pint.json 可以逐条启用或关闭规则。可用规则请参阅 PHP CS Fixer Configurator。
排除文件或目录
可以从检查中排除特定目录。notName。
notPath。
推荐配置
以下是一份在实际开发中效果不错的pint.json 配置示例。
| 规则 | 作用 |
|---|---|
no_unused_imports | 设置为 false 时,不会删除未使用的 use。Pint 的默认值为 true(会删除),常规 Laravel 项目通常无需重复配置 |
strict_comparison | 将 == 转为 ===、!= 转为 !==,避免意外的类型转换 bug |
declare_strict_types | 在文件开头自动添加 declare(strict_types=1);,提升类型安全性 |
no_unused_imports 主要面向包开发场景。 Pint 默认已经是 true(删除未使用的 use),因此常规 Laravel 项目并不需要显式配置。在包开发中,可能会通过 trait 或接口导入来开关功能,此时先加上 false,再根据各包实际情况改为 true 更加灵活。在 composer.json 中注册脚本
在composer.json 中注册 pint 相关脚本后,就可以直接通过 composer pint 执行。
在 CI 环境中可以使用
composer pint:test,它会在不修改文件的情况下检测风格违规。--test 选项在有错误时会返回非零退出码,可用于 CI 的通过判断。在 GitHub Actions 中自动执行
可以借助 GitHub Actions,在每次推送时自动修复代码风格并提交。设置 Workflow 权限
在 GitHub 仓库 Settings > Actions > General > Workflow permissions 中启用「Read and write permissions」。