composer 无法直接发布包到 gitee,因其不提供 packagist 类服务;需将代码推至 gitee 并提交仓库地址至 packagist.org 或私有源(如 satis)完成索引与分发。

不能直接用 Composer 发布包到 Gitee —— 它压根不提供 packagist.org 那类服务,你得自己搭或借第三方源。
为什么 composer publish 会报错
Composer 本身没有发布命令,composer publish 根本不存在。常见错误是误以为它像 npm publish 一样内置上传能力,结果运行后提示 Command "publish" is not defined。
- Composer 只负责安装和依赖解析,包的托管、索引、分发全靠外部仓库(如 packagist.org)
- Gitee 是代码托管平台,不是 Composer 包注册中心,它不解析
composer.json、不生成包元数据、不提供packages.json接口 - 国内访问 packagist.org 慢,有人就想“把包传到 Gitee 就行”,但光推代码没用,
composer require仍会去官方源查不到你的包
想让别人 composer require 你的 Gitee 包,必须做两件事
核心逻辑:Gitee 存代码 + 第三方源做索引。缺一不可。
- 代码推到 Gitee 公开仓库,确保根目录有合法的
composer.json(含name、version、autoload等字段) - 把该仓库地址提交给支持 Gitee 的 Composer 镜像源,比如 phpcomposer.com(已停)或自建
packagist实例;目前较稳的是 packagist.org 本身支持 Gitee —— 在提交时填 Gitee 仓库 URL 即可 - 注意:
name字段必须符合vendor/name格式,且vendor名需与你在 packagist.org 注册的用户名一致,否则验证失败
国内加速场景下,怎么让团队只走 Gitee + 私有源
如果你控制整个团队的 Composer 配置,可以绕过 packagist.org,用私有源聚合 Gitee 项目。
- 用
toran-proxy或satis搭建私有源,配置其扫描你的 Gitee 组织下所有带composer.json的仓库 - 在
composer.json中设repositories指向这个私有源地址,而非packagist.org - 每次 Gitee 上打 tag 后,手动或用 webhook 触发私有源更新索引,否则新版本不会被识别
- 别漏掉 httpS 证书问题:私有源若用自签证书,需在
composer config中设secure-http false,否则composer update直接拒绝连接
真正卡住人的从来不是推代码,而是没搞清「谁负责索引」和「谁负责分发」——Gitee 只干第一件事的前半截(存 Git),剩下全得你补。