不能,composer require vendor/name 默认只查询 packagist,本地 git 仓库必须在项目 composer.json 的 repositories 顶层显式声明为 "type": "vcs" 且 url 为 file:// 绝对路径,同时仓库内 composer.json 的 name 字段须与 require 严格一致,并用 dev-main 等分支名而非 ^1.0 约束版本。

composer require 能不能直接装本地 Git 仓库
不能。直接 composer require vendor/name 会去 Packagist 查,找不到就报 Could not find package。本地 Git 仓库必须先声明为源,否则 Composer 根本不“知道”它存在。
必须在 composer.json 里配 repositories.type = vcs
这是最常漏掉的一步。不是加个 require 就行,得显式告诉 Composer:“这个路径是个 Git 仓库,能当包源用”。
-
"type": "vcs"是强制要求,写成"package"或漏掉都不行 -
"url"必须是file://开头的绝对路径,比如file:///Users/you/project/my-pkg(macOS/Linux)或file:///C:/projects/my-pkg(Windows) - 该路径下必须有合法的
composer.json,且含正确"name"字段(格式为vendor/name,全小写、用短横线不用下划线) - repositories 必须放在项目根目录
composer.json的顶层,不能嵌套在config或其他字段里
安装 dev-main 分支时版本写法要严格匹配
本地 VCS 不支持 ^ 或 ~ 这类稳定性约束,只能按 Git 分支名或 tag 名直写。
- 分支名要加
dev-前缀:想装main分支,就得写"vendor/name": "dev-main" - 不能写
"vendor/name": "^1.0"—— Composer 会忽略,最终装不上或装错 commit - 如果仓库里
composer.json的"version"写的是"dev-feature/x",require 也得对应写"dev-feature/x" - 运行
composer install前,确保该本地仓库已git commit过,否则 Composer 找不到 HEAD 引用
权限和 Git 驱动问题最容易卡住
报 Failed to clone ... Permission denied 不一定是路径错,更可能是 PHP 进程没权限读取或 Git 没配置好。
- PHP CLI 进程需有读取
file://路径的权限(尤其 macOS 上的 SIP 或 Windows 上的 UAC 可能拦截) - 即使本地路径,Composer 底层仍调用
git clone,所以必须确保系统 Git 可用,且能成功执行git clone file:///path/to/repo - 某些环境(如 Docker 容器)默认没装 Git,会直接失败,得先
apt-get install git或等效操作 - 若用 Windows,路径里的反斜杠要转义或统一用正斜杠,
file:///C:/project比file://C:\project更可靠
composer show vendor/name 验证是否识别成功,再动手 install。











