Packagist 是 Composer 的包索引服务,不托管代码,仅自动同步公开 Git 仓库的元数据;require 时先查 Packagist 获取版本、VCS 地址等信息,再从对应仓库拉取代码;未收录需手动配置 repositories。

Composer 是装包的工具,Packagist 是包的黄页——你不用把包“上传”给 Packagist,它只是自动抄录你 GitHub/GitLab 上公开仓库的信息。
Composer require 某个包时,到底发生了什么
执行 composer require monolog/monolog 时,Composer 并不直接去 GitHub 下载代码,而是先查 Packagist(默认源)拿到这个包的元数据:比如它的 Git 地址、支持哪些版本、autoload 怎么配。然后才去对应 Git 仓库拉取代码(或 zip 包)。如果包没被收录进 Packagist,你就得手动在 composer.json 里加 repositories 指向它的 Git 地址,否则会报错 Could not find package monolog/monolog。
- Packagist 不托管源码,只存“索引”:包名、描述、版本标签、autoload 规则、VCS 地址
- 所有官方包(如
laravel/framework)都靠 Packagist 自动同步 GitHub 的 tag 和 main 分支 - 如果你的包没出现在 Packagist 搜索结果里,不是“审核没过”,而是它根本没被收录——通常因为没配 webhook 或仓库不公开
为什么你的包提交了 GitHub 还是 install 不了
常见现象:composer require yourname/your-package 报错 Could not find package yourname/your-package,但 GitHub 仓库明明存在、composer.json 也写了 "name": "yourname/your-package"。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 仓库必须是 公开的(private 仓库 Packagist 不抓)
-
composer.json必须在main(或master)分支根目录,且name字段全小写、含斜杠、格式为vendor/name - 必须打过语义化 tag(如
v1.0.0),V1.0或1.0都无效——Packagist 解析失败 - GitHub Webhook 没配或配错:Payload URL 应为
https://packagist.org/api/github?username=yourname,Content type 选application/json,事件只勾Releases
私有包或 WP 插件为啥不能直接 require
因为 Packagist 默认只认 packagist.org 这一个源,而 WordPress 插件在 wpackagist.org,公司内部包可能在 gitlab.yourcorp.com——它们都不在默认列表里。
- WordPress 插件要用
wpackagist-plugin/akismet,不是wordpress/akismet;且必须加仓库配置:"repositories": [{"type": "composer", "url": "https://wpackagist.org"}] - 私有 Git 仓库需显式声明:
{"type": "vcs", "url": "https://gitlab.yourcorp.com/my/private-lib"} - Composer 3.0+ 强制 HTTPS,若私有 Packagist 服务只跑 HTTP,会拒绝连接——必须启用 HTTPS 重定向或降级到 Composer 2.x(不推荐)
最常被忽略的一点:Packagist 不是“发布平台”,它没有“提交审核”“上架成功”的概念。只要你的 GitHub 公开、有合法 composer.json、打了规范 tag、webhook 响应正常,它就会自动出现。卡住的地方,90% 都在 webhook 配置或 tag 命名上。










