composer-normalize 插件可自动统一 composer.json 的格式、排序与结构,支持本地安装、一键标准化、Git 钩子集成及自定义配置,提升团队协作效率。

使用 composer-normalize 插件能自动统一 composer.json 的格式、排序和结构,特别适合团队协作中避免因手动编辑导致的格式差异和 Git 冗余变更。
安装 composer-normalize
推荐以项目本地方式安装,确保所有成员使用相同版本:
- 运行
composer require --dev johnpbloch/composer-normalize - 安装后会自动注册为 Composer 插件,无需额外启用
- 也可全局安装(
composer global require johnpbloch/composer-normalize),但不建议——版本易不一致
基础用法:一键标准化
在项目根目录执行以下命令即可格式化当前 composer.json:
-
composer normalize—— 格式化并保存(默认行为) -
composer normalize --dry-run—— 预览改动,不写入文件(适合 CI 或提交前检查) -
composer normalize --diff—— 输出具体 JSON 差异(类似 git diff)
它会自动处理字段顺序(如 name、type、description 等按规范排列)、缩进、空行、键名大小写(如统一为 autoload 而非 autoloading),并校验语法合法性。
集成到团队工作流
让标准化成为习惯,而不是事后补救:
- 在
composer.json的scripts中添加:"scripts": { "normalize": "composer normalize" }
成员可直接运行composer run normalize - 配合 Git hooks(如 pre-commit)自动执行:
使用composer normalize --dry-run检查,失败则阻止提交 - CI 流水线中加入:
composer normalize --dry-run && echo "✅ composer.json is normalized"
不通过即报错,强制格式合规
自定义规则(按需调整)
默认规则已覆盖大多数场景,如需微调,可在项目根目录添加 composer-normalize.json:
- 控制字段顺序:
"sort-keys": true(默认开启) - 跳过特定字段排序:
"skip-sorting": ["scripts"] - 设置缩进空格数:
"indent-size": 2 - 禁用自动添加缺失字段(如
license):"add-missing": false
配置项不多,够用为主;团队共用一份配置文件,放在 Git 中同步即可。
基本上就这些。不需要记住复杂命令,也不用争论“该不该换行”“autoload 应该放第几行”,跑一次 composer normalize,大家的 composer.json 就自然对齐了。










