最直接有效的方式是将安装说明放在根目录 README.md 中;composer.json 的 description 字段仅用于 Packagist 搜索摘要,不可塞安装步骤;scripts 可封装命令并用注释说明用途,而 type、autoload 等字段有明确职责,误用会导致功能异常。

Composer 项目没有内置的“安装说明文档”字段,composer.json 本身不支持直接写 markdown 或富文本的安装指南。所谓“配置安装说明”,实际是通过约定位置、辅助字段或外部工具间接实现的。
如何让使用者快速看到安装/使用说明
最直接有效的方式是把说明放在项目根目录的 README.md —— 所有 gitHub/gitlab 页面、Packagist 包页、ide(如 phpStorm)都会自动识别并渲染它。Composer 不读取这个文件,但它是事实标准。
-
composer.json中的description字段应简明扼要,用于 Packagist 搜索摘要,例如:"description": "A laravel service provider for caching http responses" - 不要在
description里塞安装步骤,它会被截断显示(Packagist 只展示前 120 字左右) - 若需动态生成安装命令(如带版本号的
require),可用scripts配合composer run-script封装,但不替代文档
composer.json 关键字段的真实作用与常见误用
很多字段被当成“文档占位符”,其实它们有明确职责和生效范围,乱填反而引发问题:
-
type:影响 Composer 的安装行为(如library→ 放vendor/;project→ 不被其他包 require;metapackage→ 仅触发依赖安装)。填错会导致依赖无法加载或 CI 失败 -
autoload和autoload-dev:定义类自动加载规则,不是文档字段。路径写错会直接导致class not found,且 Composer dump-autoload 不会报错,只静默跳过无效配置 -
support:仅用于 Packagist 显示链接(email,issues,source等),不参与任何逻辑。填错 URL 会导致用户点进去 404,但不影响安装 -
keywords:纯搜索关键词,对功能无影响,但写得太泛(如["php", "tool"])会降低 Packagist 搜索排名
需要嵌入命令式说明?用 scripts + 注释代替
如果真想把“执行什么命令”固化进 composer.json,唯一可靠方式是利用 scripts,并在注释中说明用途 —— 因为只有这里会被 composer run-script 执行,且 IDE 和 CI 能识别:
{ "scripts": { "install:dev": [ "@composer install --no-interaction", "php artisan migrate:fresh --seed" ], "post-install-cmd": [ "echo "✅ Project installed. Run 'php artisan serve' to start."" ] } }
-
post-install-cmd和post-update-cmd是钩子,会在每次composer install后运行,适合输出提示 - 避免在钩子里放耗时操作(如下载大文件),会拖慢所有开发者安装流程
- 脚本中用
echo输出说明时,加 Emoji 或颜色(如