如何使用composer-normalize插件保持composer.json格式一致?

12次阅读

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

如何使用composer-normalize插件保持composer.json格式一致?

使用 composer-normalize 插件可以自动标准化 composer.json 文件的格式,统一键顺序、缩进、空格和换行,避免团队协作中因手动编辑导致的无意义 diff。

安装插件

在项目根目录执行以下命令之一:

  • 全局安装(推荐,一次安装,所有项目可用):
    composer global require vaimo/composer-plugin
  • 本地安装(仅当前项目生效):
    composer require --dev vaimo/composer-plugin

安装后无需额外配置,插件会自动监听 composer installcomposer updatecomposer 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-stagednode.js 项目常用)配合脚本校验
  • CI 流程中添加检查步骤:
    composer normalize --dry-run && echo "OK" || (echo "Fail: composer.json needs normalization"; exit 1)

这样能确保每次提交前文件都符合团队约定格式。

text=ZqhQzanResources