根本原因是composer默认只查packagist.org,未在项目composer.json中显式配置repositories声明私有源;必须用"type":"vcs"(git仓库)或"type":"path"(本地路径)正确声明,并配好auth.json(https)或ssh密钥(ssh),否则composer压根不访问私有地址。

为什么 composer install 找不到你的私有包?
直接运行 composer install 时私有包报 Could not find package xxx at any version 或 404 Not Found,根本原因不是命令写错了,而是 Composer 默认只查 packagist.org —— 它压根不知道你的私有 Git 仓库在哪,更不会自动鉴权。
必须配置 repositories 并指定类型
在项目根目录的 composer.json 中,显式声明私有包来源。类型选错会导致拉取失败:
- Git 仓库(推荐):用
"type": "vcs",Composer 会自动识别 tag/branch,支持 SSH 或 HTTPS - 本地路径(仅调试):用
"type": "path",指向本机文件夹,无需 Git,但要求包内含合法composer.json - 不要用
"type": "package"手动写版本 —— 容易和实际 Git tag 对不上,同步维护成本高
示例(SSH 方式):
{
"repositories": [
{
"type": "vcs",
"url": "git@github.com:your-org/your-private-package.git"
}
]
}
HTTPS 私有仓库必须配 auth.json,SSH 必须配密钥
GitHub/GitLab 等平台对私有库强制鉴权。不配就会卡在 Cloning into ... fatal: Could not read from remote repository:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- HTTPS 场景:在项目根目录或全局
~/.composer/auth.json写入 token(推荐用 Personal Access Token,非密码) - SSH 场景:确保
ssh -T git@github.com能通,且composer.json的url是git@...格式,不是https://... - 别把 token 明文写进
composer.json—— 安全策略会拒绝加载
auth.json 示例:
{
"http-basic": {
"github.com": {
"username": "your-github-username",
"password": "ghp_abc123..."
}
}
}
本地开发时优先用 "path" 类型跳过网络和鉴权
当你在改私有包代码,又想立刻在主项目里验证,"path" 是最快路径 —— 它绕过 Git 克隆、跳过鉴权、实时读取本地文件:
- 确保私有包目录下有完整
composer.json(含"name"和"version") - 主项目的
composer.json中这样写:
{
"repositories": [
{
"type": "path",
"url": "../your-private-package"
}
],
"require": {
"your-vendor/your-private-package": "*"
}
}
注意:"*" 会匹配任意本地路径下的版本,但不会自动更新 —— 改了包代码后,需手动 composer update your-vendor/your-private-package 触发重链接。
真实调试中,最容易被忽略的是 path 模式下没清 Composer 缓存,导致旧符号链接残留;执行 composer dump-autoload 或删掉 vendor/composer/installed.json 里的对应条目再重装更稳妥。










