Laravel 安装和开发环境:修改项目依赖为新的镜像地址 0 个改进

前置说明

本文以从 https://pkg.phpcomposer.com 镜像切换到 https://packagist.laravel-china.org 为例子来讲解。请自行修改命令行中对应的链接。

问题说明

Composer 在安装时会在 composer.lock 文件中写入扩展包下载地址,如:

file

一些年代久远的项目中使用了 https://pkg.phpcomposer.com/ 的中文加速镜像,然后最近因为其镜像访问出了故障:

file

运行 composer install 后会出现 404 并从源仓库开始下载,导致下载速度非常慢。这种情况即使是你全局配置了加速镜像也会出现:

file

问题: 如何把 composer.lock 文件里的这些 "url": "https://packagist.phpcomposer.com/file... 下载地址变为新的加速进行的地址呢?

解决方案

1. 配置新镜像

首先配置你的新镜像为全局镜像:

$ composer config -g repo.packagist composer https://packagist.laravel-china.org

2. 刷新 composer.lock 文件

使用以下命令:

$ composer update nothing

或者:

$ composer update --lock

--lock: 只升级 lock 文件的哈希以消除 lock 文件过期的警告。

执行成功后:

file

3. 测试一下

清空本地缓存:

$ rm -rf vendor
$ composer clear-cache

执行安装命令:

$ composer install -vvv

享受高速下载:

file

常见问题

问: 此操作是否会升级依赖版本?
答: 不会,只会在 composer.lock 中将旧的依赖下载地址更新为新的,版本保持不变。

问: 线上环境里已经下载了依赖到 vendor 文件夹,是否需要删了再重新下载?
答: 不需要,如上所讲,只是更新了下载链接,代码包连哈希都是一样,无需重新下载。

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 7

composer update nothing 很优雅,之前我都建议暴力删除 rm composer.lock 了

1年前 评论

速度也快不到多少

1年前 评论
Noctis 2个月前
medz

@扣丁禅师 我现在都是在 CLI 挂梯子,laravel china 的镜像真的是慢。。。可能水管小吧!而且一些包镜像延迟很大!

11个月前 评论

这个很棒

10个月前 评论

从laravel china镜像即将下线的公告过来,问下:
做完composer update --lock之后,一定有必要做
$ rm -rf vendor
$ composer clear-cache
这两步吗?
主要是不想服务端中断。
现有的vendor继续用不行吗?

2个月前 评论
Noctis 2个月前
晓鹤

贴下可其他可替换的源:

阿里 - https://mirrors.aliyun.com/composer/

腾讯 - https://mirrors.cloud.tencent.com/composer...

2个月前 评论

按照上面的操作了一边 在更新到一半的时候 提示要输入账号密码

file

2个月前 评论
晓鹤 2个月前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!