必须先创建公开GitHub仓库并配置合规composer.json,再打合法Git tag(如v1.0.0)推送,最后提交仓库URL至Packagist索引;name需为vendor/name格式、autoload和license必填且正确,否则索引失败。
不能直接“创建包”再“发布到 Packagist”——Packagist 不托管代码,只索引 Git 仓库;你必须先有公开的 Git 仓库(如 GitHub),且该仓库包含合法的 composer.json,Packagist 才能抓取并收录。
怎么写一个可被 Composer 安装的 composer.json
这是整个流程的起点,也是最容易出错的一环。不是随便放个 JSON 就行,Packagist 会校验基础字段是否合规:
-
name必须是vendor/name格式(如myname/my-awesome-package),且全小写、只含字母/数字/-/_;vendor名需与你在 Packagist 的用户名一致 -
type推荐设为library(除非是插件、wp-plugin 等特殊类型) -
autoload必须配置,否则别人require后无法自动加载你的类;最常用的是"psr-4": {"MyName\\MyAwesomePackage\\": "src/"} -
license必须明确(如"MIT"),空值或模糊值(如"proprietary")会导致 Packagist 拒绝索引 - 不要写
repositories字段——那是使用者的配置,不是包自身的声明
为什么 GitHub 仓库要公开 + 有 Git tag 才能被 Packagist 正确识别
Packagist 不拉取 main 分支最新代码,它靠 Git tag 版本号(如 v1.0.0、1.0.0)来生成可用版本。没有 tag,Packagist 就只显示 “No releases found”,用户也 install 不到任何稳定版: