Packagist 不托管代码,只索引已注册包的元数据;composer require 找不到新 GitHub 仓库,根本原因是 Packagist 未收录该包——需手动提交 URL、确保 composer.json 合法、打 v 前缀 tag 并推送、配置有效 webhook。

Packagist 不托管你的代码,它只索引 packagist.org 上注册的包元数据;真正托管代码的是 GitHub、GitLab 等 VCS 仓库。
为什么 composer require 找不到你刚 push 的 GitHub 仓库
常见现象:你把代码推到 GitHub,运行 composer require vendor/name 却报错 Could not find package vendor/name。
根本原因不是 Composer “没连上”,而是 Packagist 没有该包的注册记录 —— 它不会自动扫描 GitHub,必须手动提交或配置自动同步。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 首次发布前,必须访问
packagist.org点击右上角 “Submit” 输入你的 GitHub 仓库 URL(如https://github.com/yourname/your-package) - 若已提交但未更新,检查仓库根目录是否有合法的
composer.json(含"name"、"type"、"autoload"等必需字段) - 提交后 Packagist 默认启用 “auto-update”,需在 GitHub 仓库 Settings → Webhooks 中确认已存在 Packagist 的 webhook(Payload URL 类似
https://packagist.org/api/github)
如何让 Packagist 正确识别你的版本标签
Packagist 依赖 Git 标签(tag)识别稳定版本,v1.0.0、1.0.0、dev-main 这些字符串会被解析为不同稳定性分支,影响 composer install 默认行为。
- 使用语义化版本标签,推荐格式:
v1.2.3(带v前缀),Packagist 能正确识别为 stable 版本 - 避免用
1.2.3(无v)—— 部分旧版 Packagist 解析异常,Composer 可能降级为dev-1.2.3 - 主开发分支建议命名为
main或master,并在composer.json中声明:"default-branch": "main"(Composer 2.2+ 支持) - 打 tag 后需手动在 Packagist 页面点击 “Update” 或等待 webhook 触发(通常几秒内)
本地开发时绕过 Packagist 直接加载私有仓库
不想公开代码、或还在调试阶段,又希望用 composer require 流程测试依赖关系?不用注册 Packagist。
- 在项目根目录
composer.json中添加repositories字段,类型设为vcs:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/yourname/your-private-package"
}
],
"require": {
"yourname/your-private-package": "dev-main"
}
}
- 注意:
url必须是可被 Composer 克隆的地址(支持 HTTPS/SSH);若用 SSH,确保本地已配好 SSH key - 版本约束写
dev-main而非dev-master,否则可能因分支名不匹配失败 - 此方式下 Packagist 完全不参与,所有解析和下载由 Composer 直连 Git 服务器完成
真正容易被忽略的是:Packagist 不是 Git 托管服务,也不缓存你的源码文件。它只存一份 JSON 元数据,指向你仓库的真实 URL 和 tag 列表。一旦 GitHub 仓库设为私有或删除,Packagist 上的包会立即变为 “unavailable”,即使之前已成功安装过。

















