如何编写一个composer脚本来自动执行代码格式化(如PHP-CS-Fixer)?
发布时间 - 2025-11-14 00:00:00 点击率:次通过 Composer 集成 PHP-CS-Fixer 可自动格式化代码,首先安装工具为开发依赖,接着在项目根目录配置 .php-cs-fixer.dist.php 定义规则,然后在 composer.json 中添加 scripts,如 "format" 手动执行格式化,"post-install-cmd" 和 "post-update-cmd" 在安装或更新依赖后自动触发格式化,推荐使用 vendor/bin/php-cs-fixer 确保路径一致,还可设置 "check-format" 脚本用于 CI 环境中检测格式问题而不修改文件,从而统一团队代码风格并融入日常开发流程。
要在 Composer 中自动执行代码格式化(如使用 PHP-CS-Fixer),你可以通过定义脚本钩子,在执行 Composer 命令时自动触发格式化工具。以下是具体实现步骤。
安装 PHP-CS-Fixer
推荐将 PHP-CS-Fixer 作为项目依赖或开发依赖安装,确保团队成员环境一致:
composer require --dev friendsofphp/php-cs-fixer这会把工具安装到 vendor/bin 目录下,可通过 ./vendor/bin/php-cs-fixer 调用。
配置 PHP-CS-Fixer 规则
在项目根目录创建 .php-cs-fixer.dist.php 文件,定义代码规范:
// .php-cs-fixer.dist.php$finder = PhpCsFixer\Finder::create()
->in(__DIR__ . '/src')
->in(__DIR__ . '/tests');
return PhpCsFixer\Config::create()
->setRules([
'@PSR12' => true,
'array_syntax' => ['syntax' => 'short'],
'no_unused_imports' => true,
])
->setFinder($finder);
这个配置会针对 src 和 tests 目录应用 PSR-12 等规则。
在 composer.json 中定义脚本
编辑 composer.json,添加自定义脚本和钩子:
"scripts": {"format": "php-cs-fixer fix",
"post-update-cmd": "php-cs-fixer fi
x","post-install-cmd": "php-cs-fixer fix"
}
说明:
- format:手动运行格式化:composer format
- post-install-cmd 和 post-update-cmd:每次执行 composer install 或 composer update 后自动格式化代码
如果全局未安装 php-cs-fixer,建议改用 vendor 路径:
"scripts": {"format": "vendor/bin/php-cs-fixer fix",
"post-install-cmd": "vendor/bin/php-cs-fixer fix"
}
可选:仅检查不修复
若只想在 CI 环境中检查格式问题,可添加一个只检测的命令:
"scripts": {"check-format": "vendor/bin/php-cs-fixer fix --dry-run --diff"
}
这个命令不会修改文件,但会输出哪些文件不符合规范,适合集成到 Git Hooks 或 CI/CD 流程中。
基本上就这些。通过 Composer 脚本集成 PHP-CS-Fixer,能有效保证团队代码风格统一,且无需额外配置即可在常规开发流程中自动执行。
# php
# js
# git
# json
# composer
# 工具
# 代码规范
# format
# require
# 你可以
# 推荐使用
# 要在
# 而不
# 可在
# 自定义
# 只想
# 可选
# 不符合
# 还可
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
如何用y主机助手快速搭建网站?
如何快速上传建站程序避免常见错误?
详解CentOS6.5 安装 MySQL5.1.71的方法
如何正确选择百度移动适配建站域名?
Laravel怎么调用外部API_Laravel Http Client客户端使用
JavaScript如何实现路由_前端路由原理是什么
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
如何在阿里云高效完成企业建站全流程?
如何在Windows服务器上快速搭建网站?
智能起名网站制作软件有哪些,制作logo的软件?
javascript日期怎么处理_如何格式化输出
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
JS中对数组元素进行增删改移的方法总结
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
JS经典正则表达式笔试题汇总
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
微信小程序 wx.uploadFile无法上传解决办法
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
大型企业网站制作流程,做网站需要注册公司吗?
Laravel怎么在Controller之外的地方验证数据
,怎么在广州志愿者网站注册?
如何在云主机上快速搭建网站?
如何注册花生壳免费域名并搭建个人网站?
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
如何用PHP快速搭建CMS系统?
WordPress 子目录安装中正确处理脚本路径的完整指南
焦点电影公司作品,电影焦点结局是什么?
详解Android——蓝牙技术 带你实现终端间数据传输
Android GridView 滑动条设置一直显示状态(推荐)
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
php结合redis实现高并发下的抢购、秒杀功能的实例
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
如何快速选择适合个人网站的云服务器配置?
如何在阿里云完成域名注册与建站?
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel如何处理异常和错误?(Handler示例)
如何在宝塔面板创建新站点?
如何快速建站并高效导出源代码?
Laravel如何实现API资源集合?(Resource Collection教程)
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何在Windows虚拟主机上快速搭建网站?
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询

