Composer 支持直接从 Git 仓库安装包,需在 composer.json 中配置 type 为 "vcs" 的仓库,require 中用 dev-分支名、tag 或 commit hash 指定版本,私有仓库须配 auth.json 认证。

Composer 可以直接从 Git 仓库安装包,无需发布到 Packagist,适合私有库、未发布分支、临时调试或 fork 后快速验证修改。
使用 vcs 类型仓库配置
在项目根目录的 composer.json 中添加自定义仓库,类型必须为 "vcs",URL 指向 Git 仓库地址(支持 HTTPS 或 SSH):
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/yourname/package-name.git"
}
],
"require": {
"vendor/package-name": "dev-main"
}
}
注意:dev-main 表示安装 main 分支(Git 默认主分支名),不是稳定版本号;Composer 会自动识别该仓库中所有含 composer.json 的分支和 tag。
- 若仓库无
composer.json,安装会失败并报错Could not find package ... at any version - SSH 地址如
git@github.com:yourname/package-name.git需本地已配置 SSH key 并能git clone成功 - 不建议在生产环境长期依赖
dev-分支,因无语义化版本约束,更新不可控
require 中指定分支、tag 或 commit hash
安装时可直接用分支名、tag 名或完整 commit hash 作为版本约束:
-
"vendor/package-name": "dev-feature/login"→ 安装feature/login分支 -
"vendor/package-name": "v2.1.0"→ 安装带v2.1.0tag 的提交(前提是该 tag 下有有效composer.json) -
"vendor/package-name": "dev-main#abc1234"→ 安装main分支中abc1234开头的 commit(仅限 Composer 2.2+)
执行 composer install 或 composer update vendor/package-name 即可拉取对应代码。Composer 会把源码克隆到 vendor/vendor/package-name,并按 autoload 规则注册自动加载。
常见错误:找不到包或版本不匹配
典型报错包括:
-
Could not find a matching version of package vendor/name→ 仓库 URL 错误 / 未加到repositories/ 该分支无composer.json或其name字段与 require 不一致 -
Package vendor/name has a dependency on composer-plugin-api ^2.0, but composer-plugin-api 1.1.0 is installed→ 仓库中composer.json的require声明了不兼容的插件 API 版本,需检查目标仓库是否适配当前 Composer 版本 - 安装后类无法自动加载 → 检查目标仓库
composer.json中的autoload配置(如"psr-4"路径是否正确映射到实际 src 目录)
调试建议:运行 composer show -p 查看已注册仓库列表;用 composer validate 确认项目和目标包的 composer.json 格式合法。
私有 GitLab/Gitee 仓库需要额外认证
对于需要登录的私有仓库(如内网 GitLab),不能只靠 URL,必须配置 auth.json:
{
"http-basic": {
"gitlab.example.com": {
"username": "token",
"password": "glpat-xxxxxxxxxxxxxxxxxxxx"
}
}
}
将该文件放在项目根目录或全局 COMPOSER_HOME 下(如 ~/.composer/auth.json)。GitLab Personal Access Token 需开启 read_repository 权限;Gitee 则用私人令牌 + 用户名(密码字段填令牌)。
HTTPS 私有仓库若跳过认证,Composer 会卡在交互式用户名输入,导致 CI 失败 —— 这点容易被忽略,尤其在 GitHub Actions 或 GitLab CI 中。










