要让 pint 识别并格式化所有 PHP 文件,需在根目录下创建严格命名的 pint.json 配置文件,明确列出所有目标路径如 ["app","config","database","routes","tests","src","packages"],避免使用不支持的 glob 表达式,并通过 --test 验证配置有效性。

直接运行 pint 就能格式化项目里的 PHP 文件,但默认行为容易漏文件、跳过配置、或和团队规则不一致——关键不在“能不能用”,而在“用对没用对”。
如何让 pint 识别并格式化所有 PHP 文件?
默认只处理 app/、config/、database/、routes/ 和 tests/ 目录,但实际项目常有 src/、packages/ 或 stubs/ 等自定义路径。不显式指定,这些文件就逃过了格式化。
- 运行
vendor/bin/pint --paths="app,config,database,routes,tests,src,packages"覆盖全部目标目录 - 更稳妥的方式是写进
pint.json配置文件:{ "preset": "laravel", "paths": ["app", "config", "database", "routes", "tests", "src", "packages"] } - 避免用
**/*.php这类 glob 表达式——pint不支持通配符路径,会静默忽略
为什么修改了 pint.json 却没生效?
pint 默认只读取根目录下的 pint.json,且不会自动继承或合并其他配置。常见失效原因是:
- 把配置放在子目录(如
tests/pint.json)——完全无效 - 文件名写成
.pint.json或pint.config.json——必须是严格的小写pint.json - JSON 格式错误(比如末尾多逗号、用了单引号)——
pint不报错,但回退到默认 preset - 改完配置后没加
--test验证:先跑vendor/bin/pint --test看是否报错,再执行真实格式化
如何让 pint 和 PHP-CS-Fixer 共存而不冲突?
很多老项目已用 php-cs-fixer,而 pint 底层就是它封装的。强行共存会导致重复格式化、规则打架,尤其在 CI 中容易失败。
一、源码描述这是一款比较简单的企业管理系统源码,界面美观大方,功能简单,特别适合初学者学习研究,系统运行十分流畅,可以作为二次开发,同时也是可以帮助初学者增长知识的优秀代码。二、功能介绍主要功能:企业动态,产品介绍 ,免费下载,定制服务,该源码比较适合新手学习和二次开发使用。三、源码特点1、网站布局:采用目前最先进的布局方式DIV+CSS,符合W3C的标准和Web2.0的风格。2、程序设计模块化,
立即学习“PHP免费学习笔记(深入)”;
- 删掉
.php-cs-fixer.php或php-cs-fixer.php,只保留pint.json - 如果必须保留 php-cs-fixer(例如某些自定义规则 pint 不支持),那就禁用 pint:在
composer.json的scripts里移除"pint"条目,改用"cs-fix": "php-cs-fixer fix" - 注意
pint的laravelpreset 和 php-cs-fixer 的@Laravel规则集基本等价,但版本对齐很重要:pint v1.x 对应 php-cs-fixer v3.10+;混用低版本可能触发Unknown fixer错误
最易被忽略的一点:pint 不检查 vendor/ 和 node_modules/,这没问题;但它也不会处理 .php 后缀但非 PHP 代码的文件(比如 Blade 模板里的 @php 块)。真要统一风格,Blade 文件得靠 blade-formatter 单独处理——pint 管不了那块。










