composer需在composer.json中显式声明vcs类型仓库,url须为可clone地址且包名须与仓库根目录composer.json的name字段完全一致,否则无法识别。

Composer 可以直接从 Git、SVN 等 VCS 仓库安装包,但默认只认 Packagist 上注册的包。要本地加载未发布到 Packagist 的自定义仓库,关键不是改 composer.json 里的 require,而是得让 Composer “知道”那个仓库存在且可信。
在 composer.json 中声明 repository 类型为 vcs
Composer 不会自动扫描任意 Git URL,必须显式声明一个 repository 段,并指定类型为 vcs。它支持 Git、GitHub、GitLab、Bitbucket、SVN 和 Mercurial,但最常用的是 git。
-
type必须设为"vcs",不能写成"git"或漏掉 -
url要填可 clone 的地址,比如"https://github.com/yourname/your-package.git"或本地路径"file:///path/to/your/package" - 如果用本地文件路径,确保路径是绝对路径(
file:///开头),相对路径会失败 - 多个自定义仓库就写多个
repository对象,顺序无关,Composer 会合并查找
示例片段:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
{
"repositories": [
{
"type": "vcs",
"url": "file:///home/user/my-private-lib"
}
],
"require": {
"myvendor/mypackage": "dev-main"
}
}
包名必须与仓库中 composer.json 的 name 一致
Composer 匹配依赖时,不看 URL,只看 require 里写的包名是否和目标仓库根目录下 composer.json 中的 "name" 字段完全一致(包括大小写和斜杠)。
- 如果仓库里
composer.json写的是"name": "acme/utils",那require就必须写"acme/utils",写成"acme/utils-dev"或"acme/utils"加错版本约束都会找不到 - 版本号不能瞎写:用
dev-main对应 main 分支,dev-develop对应 develop 分支;tag 则用真实 tag 名,如"1.2.0" - 如果仓库没打任何 tag,又没配置
minimum-stability,dev-main可能被拒绝——此时加一行"minimum-stability": "dev"并设"prefer-stable": false
执行 install 时常见失败原因
运行 composer install 却提示 Package yourvendor/yourpackage not found,大概率不是命令问题,而是下面这几处卡住了:
-
composer.json里repositories没生效:检查 JSON 格式是否合法,有没有多逗号、少引号;运行composer config --list看repositories是否被正确读取 - 本地路径权限问题:用
file://时,确保当前用户有读取该目录下composer.json和代码的权限,尤其注意 SELinux 或 macOS Gatekeeper 限制 - 分支名拼错:
dev-main是 GitHub 默认主干分支名,GitLab 默认可能是dev-master;查清目标仓库实际分支名再写 - 缓存干扰:Composer 会缓存包信息,改了
repositories后建议先跑composer clear-cache再 install
最易忽略的一点:VCS 仓库必须包含有效的 composer.json 文件,且该文件需放在仓库根目录——不是子目录,也不能是软链接指向的位置。否则 Composer 会跳过这个仓库,连错误都不报,只安静地“找不到包”。










