如何在Laravel中使用FriendsOfPHP/PHP-CS-Fixer包格式化JSON文件
配置调整方案
1. 调整Finder规则,匹配JSON文件
PHP-CS-Fixer默认仅扫描PHP文件,需要手动指定匹配.json后缀的文件,可按需排除不需要格式化的JSON文件(如自动生成的锁文件等)。
$finder = PhpCsFixer\Finder::create() ->ignoreVCSIgnored(true) ->exclude('tests/Fixtures') ->in(__DIR__.'/../laravel8') ->ignoreDotFiles(true) ->ignoreVCS(true) // 新增:匹配所有JSON文件 ->name('*.json') // 可选:排除不需要格式化的JSON文件 ->notName('package-lock.json') ->notName('composer.lock') ->append([ __DIR__.'/dev-tools/doc.php', __FILE__, ]);
2. 新增JSON格式化规则
在规则配置中加入JSON相关的格式化规则,可选配置项可根据自身需求调整:
$config = new PhpCsFixer\Config(); $config ->setRiskyAllowed(true) ->setRules([ '@PSR12' => true, // 新增JSON格式化规则 'json_indentation' => true, // JSON默认使用4空格缩进,可自定义缩进规则 'json_unescape_slashes' => true, // 不转义斜杠 'json_unescape_unicode' => true, // 不转义Unicode中文等特殊字符 ]) ->setFinder($finder);
3. 可选:调整执行命令便于调试
原有formatCode函数可正常使用,如需查看格式化详情排查问题,可在命令中加-vvv参数:
public function formatCode(): bool { $output = []; exec( 'php '.storage_path('php-cs-fixer.phar').' fix -vvv --config='.base_path('.php-cs-fixer.dist.php'), $output ); // 调试时可打印输出查看执行日志 // var_dump($output); return true; }
注意事项
- 需保证使用的PHP-CS-Fixer版本为3.x及以上,旧版本不支持JSON格式化相关规则
- 如果仅需要格式化JSON不需要格式化PHP文件,可删除规则中的
@PSR12配置,同时在Finder中移除对PHP文件的匹配规则
内容的提问来源于stack exchange,提问作者Bhargav Rangani
相关产品推荐
相关产品推荐

