切换至Composer Path Repositories后依赖解析失败问题求助
问题分析与解决思路
错误核心原因:Composer的路径仓库(Path Repository)不会继承子包的repositories配置。主项目执行composer install时,只会读取sub/project的依赖声明,但不知道rotari/test_repo这个私有仓库的存在,因此无法找到对应版本的包。
以下是具体解决方案:
1. 将子包的仓库配置迁移到主项目
把/local/composer.json里的私有仓库配置,直接复制到主项目的repositories数组中,让主Composer能识别这个私有源:
修改后的主项目/composer.json示例:
{ "name": "main/project", "type": "project", "repositories": [ { "type": "path", "url": "local" }, { "type": "git", "url": "git@github.com:rotari/test_repo.git" } ], "require": { "sub/project": "dev-main" }, "extra": { "installer-paths": { "web/modules/custom/{$name}": [ "type:drupal-custom-module" ] } } }
2. 验证分支与版本匹配
- 确认
/local目录下的sub/project本地分支是main(主项目依赖的是dev-main) - 检查
rotari/test_repo的远程仓库是否存在main分支,若分支名不一致,需在依赖声明中指定正确的分支别名(比如在require里写rotari/test_repo:dev-your-branch-name as dev-main)
3. 清理缓存后重试
执行以下命令清除Composer缓存,避免旧配置干扰:
composer clear-cache composer install
4. 可选:全局管理私有仓库(多项目场景)
如果多个项目需要访问同一个私有仓库,可以把仓库配置放到全局Composer配置文件(~/.composer/composer.json)中,或者通过auth.json管理SSH密钥/访问令牌,减少重复配置。
内容的提问来源于stack exchange,提问作者Rotari Radu
相关产品推荐
相关产品推荐

