Roots Bedrock引入GitHub私有付费插件遇Composer包找不到问题求助
问题:私有GitHub仓库存储WordPress付费插件无法被Bedrock的Composer识别
我尝试在个人GitHub账号创建私有仓库存储付费WordPress插件,并将其引入Roots Bedrock网站,但每个插件均出现报错:
composer.json requires {pluginname}, it could not be found in any version, there may be a typo in the package name
已完成以下配置:
- 仓库配置(Bedrock的
composer.json):"repositories": [ ... { "type":"vcs", "url":"https://github.com/{mygithubacct}/{reponame}" }, ... ] - 依赖配置(Bedrock的
composer.json):"require": { ... "{pluginname}": "^3.1", ... } - 权限配置(
auth.json):{ "github-oauth": { "github.com": "{token}" } }
确认仓库包含完整插件文件夹,且{pluginname}与插件自身composer.json的name字段完全一致,已解决连接权限问题。现存在以下疑问:
- 当前仓库是直接复制WordPress插件文件夹作为仓库根目录,是否需要改用压缩包格式?
- 若格式正确,还有哪些原因会导致该报错?
- 报错上方出现
Info from https://repo.packagist.org:,是否意味着Composer忽略私有仓库仅查询Packagist?如何确保它优先使用私有仓库?
解答
1. 仓库格式说明
不需要使用压缩包,直接将插件文件夹作为GitHub仓库根目录是正确的做法。核心要求是插件根目录下必须存在完整且格式正确的composer.json,且其中的name字段必须与Bedrock的composer.json中require的包名完全一致(大小写敏感)。
2. 其他可能的报错原因
- 缺少语义化版本标签:Composer从VCS仓库识别版本依赖的核心依据是Git标签,若你的GitHub仓库没有打上符合
^3.1范围的标签(如v3.1.0、v3.1.1),Composer会找不到匹配的版本。需要给仓库打上标准语义化版本标签(格式为vX.Y.Z)。 - 分支名称不匹配:若仓库未打版本标签,Composer默认会尝试读取
master或main分支的代码。如果你的仓库主分支名不是这两个,需要在仓库配置中指定分支:{ "type":"vcs", "url":"https://github.com/{mygithubacct}/{reponame}", "branch": "your-branch-name" } - 权限未完全生效:虽然配置了
auth.json,需确认token拥有该私有仓库的读取权限,可执行composer diagnose命令检查GitHub连接状态。 - Composer缓存干扰:Composer可能缓存了旧的仓库元数据,执行
composer clear-cache清除缓存后再尝试安装。 - 插件
composer.json缺失关键字段:除name外,插件的composer.json需包含version字段(或通过Git标签自动识别),否则Composer无法识别有效版本。
3. 关于Composer是否忽略私有仓库的问题
报错上方的Info from https://repo.packagist.org:仅表示Composer同时查询了Packagist,不代表忽略了私有仓库。Composer默认会按repositories数组的顺序查询所有配置的仓库。
若要确保私有仓库被优先或正确识别,可采取以下操作:
- 将私有仓库配置放在
repositories数组的最前面,Composer会按顺序优先查询。 - 执行
composer show {pluginname}命令,查看输出结果中的source字段,确认包是否来自你的私有GitHub仓库。 - 若需完全禁用Packagist(仅在所有依赖均来自私有仓库时使用),可在
repositories中添加:{ "packagist": false }
内容的提问来源于stack exchange,提问作者AlphaBeta
相关产品推荐
相关产品推荐

