composer-normalize 插件可自动标准化 composer.json 格式,支持全局/本地安装、自动监听命令、手动格式化、批量处理及自定义规则,并可通过 Git 钩子和 CI 集成确保团队格式统一。

使用 composer-normalize 插件可以自动标准化 composer.json 文件的格式,统一键顺序、缩进、空格和换行,避免团队协作中因手动编辑导致的无意义 diff。
安装插件
在项目根目录执行以下命令之一:
- 全局安装(推荐,一次安装,所有项目可用):
composer global require vaimo/composer-plugin - 本地安装(仅当前项目生效):
composer require --dev vaimo/composer-plugin
安装后无需额外配置,插件会自动监听 composer install、composer update 和 composer dump-autoload 等命令,并在操作完成后自动 normalize composer.json。
手动触发格式化
如需立即标准化现有文件,运行:
-
composer normalize—— 格式化当前项目的composer.json -
composer normalize --dry-run—— 预览变更内容,不实际写入 -
composer normalize --verbose—— 显示详细处理过程
支持批量处理:在含多个 composer.json 的 monorepo 中,可配合 --path 指定路径或使用 find 命令遍历。
自定义格式规则
默认行为已覆盖常见规范(如键按字母序排列、4空格缩进、末尾不加逗号),如需调整,可在项目根目录添加 composer.json 同级的 composer-normalize.json 配置文件:
-
"indent": 2—— 改为 2 空格缩进 -
"sort-keys": false—— 关闭键排序(不推荐) -
"trailing-comma": true—— 启用数组末尾逗号(PHP 7.3+ 兼容)
配置项以 JSON 格式书写,修改后需重新运行 composer normalize 生效。
集成到开发流程
为防止未格式化的文件被提交,建议结合 Git 钩子:
- 在
.git/hooks/pre-commit中加入:composer normalize --dry-run || { echo "composer.json not normalized"; exit 1; } - 或使用
husky+lint-staged(Node.js 项目常用)配合脚本校验 - CI 流程中添加检查步骤:
composer normalize --dry-run && echo "OK" || (echo "Fail: composer.json needs normalization"; exit 1)
这样能确保每次提交前文件都符合团队约定格式。










