项目图标需将 logo.png(120×120 PNG)置于 Git 仓库根目录并提交,Packagist 通过 support.source 地址自动抓取;composer.json 中添加 icon 字段无效,修改后须打新 tag 或手动更新才能生效。

composer.json 里怎么加项目图标
Composer 本身不支持在 composer.json 中直接定义或渲染图标,所谓“添加图标”实际是让 Packagist(或私有仓库如 Satis)在网页展示时拉取一张图片。关键字段是 support 下的 source 或 issues,但真正起作用的是 homepage 或仓库根目录下的 logo.png(部分平台自动识别)。
最可靠、被 Packagist 官方文档明确支持的方式:把图标文件放在你 Git 仓库的根目录,命名为 logo.png(必须是 PNG,尺寸建议 120×120 像素),且确保该文件被提交并可公开访问。
- Packagist 在抓取包信息时,会尝试从你
source地址(如 GitHub 仓库)根路径请求/logo.png - 如果用的是 GitHub,
https://github.com/yourname/yourpkg/blob/main/logo.png必须能 200 访问(注意不是 raw 链接,Packagist 自动转) -
composer.json里无需额外字段——加了logo或icon字段不会被识别,纯属无效
为什么改了 composer.json 没反应
常见错误是以为改完 composer.json 本地 push 就行,其实 Packagist 不监听文件变更,它只在你触发更新(比如打新 tag 或手动点击 “Update”)后重新抓取整个仓库元数据。
- 修改
logo.png后,必须提交 + push 到远程,并打一个新 tag(如v1.2.1),否则 Packagist 还是缓存旧快照 - 如果你没打 tag,也可以去 Packagist 页面点 “Update” 按钮(需有维护者权限),它会强制重抓 latest commit
- 改完
composer.json的description或keywords等字段,同样要走这套流程才生效
packagist.org 显示的项目信息从哪来
Packagist 展示的标题、描述、作者、许可证、图标,全部来自两处:你 composer.json 的字段 + 仓库结构。其中图标只认 logo.png 文件,其他字段才读 JSON。
-
name→ 包名(如monolog/monolog) -
description→ 简短描述(显示在搜索结果中) -
keywords→ 关键词(影响搜索权重) -
homepage→ 项目主页链接(可填官网,非 GitHub) -
support.source→ 仓库地址(Packagist 用它找logo.png)
注意:support 是对象,不是字符串;写成 "support": "https://github.com/..." 会解析失败,正确写法是 "support": {"source": "https://github.com/..."}。
私有仓库或 Satis 怎么配图标
Satis 支持自定义 logo,但方式完全不同:它靠配置文件里的 output-html 和 homepage 控制页面模板,图标得手动塞进生成的 HTML 或 CSS 里。
- Satis 不读
logo.png,也不看composer.json里的任何图标字段 - 如果要用统一 logo,得在 Satis 配置中指定
template-dir,然后覆盖index.html.twig,在<header></header>里硬编码<img src="my-logo.png" alt="composer怎么给项目添加图标_配置composer.json显示信息【笔记】" > - 私有 Packagist 替代品(如 Private Packagist)行为接近官方,仍依赖
logo.png,但需确认其版本是否启用该特性(v2.0+ 默认开启)
图标这事看着小,但卡点全在外部服务的约定和缓存机制上——不是写对 JSON 就完事,得盯住仓库路径、提交动作、服务抓取时机这三环。


















