Laravel 5.6中Composer安装自定义私有包未拉取依赖的问题
解决Laravel中安装Bitbucket私有包时依赖未自动安装的问题
我之前碰到过一模一样的问题,核心原因是你在Laravel的composer.json里用了type: package的仓库配置方式——这种方式是手动硬编码包的元数据,Composer完全不会去拉取私有仓库里实际的composer.json文件,自然也就不会解析里面的require依赖项。
解决步骤:
替换仓库配置类型为
vcs:
把你原来的repositories配置改成下面这样,vcs类型会让Composer自动克隆私有仓库并读取里面的composer.json,从而正常处理依赖:"repositories": [ { "type": "vcs", "url": "https://{你的Bitbucket用户名}@bitbucket.org/x/y.git" } ]注意把
{你的Bitbucket用户名}替换成实际的用户名;如果需要密码认证,更安全的方式是在全局Composer里配置Bitbucket凭证,避免把密码写在项目文件里:composer config --global bitbucket.org {用户名} {密码或Bitbucket App密码}重新安装包:
先移除已安装的包(如果存在),再重新执行安装命令:composer remove x/y composer require x/y:^1.0.2
为什么原来的配置不行?
你原来的type: package配置是手动定义了包的名称、版本、源码地址等信息,Composer会完全信任你提供的这些元数据,不会再去仓库里拉取真实的composer.json——所以包本身的依赖项根本不会被Composer识别到,自然也就不会安装。而vcs类型会告诉Composer:「去这个Git仓库里找包的真实配置文件」,这样依赖解析流程就恢复正常了。
执行完新的安装命令后,你应该能看到Composer不仅安装x/y,还会自动安装tcg/voyager、predis/predis这些依赖项了。
内容的提问来源于stack exchange,提问作者Actionsee
相关产品推荐
相关产品推荐

