Composer 修改项目依赖为新的镜像地址
前置说明
本文以从 https://pkg.phpcomposer.com
镜像切换到 https://packagist.laravel-china.org
为例子来讲解。请自行修改命令行中对应的链接。
问题说明
Composer 在安装时会在 composer.lock
文件中写入扩展包下载地址,如:
一些年代久远的项目中使用了 https://pkg.phpcomposer.com/
的中文加速镜像,然后最近因为其镜像访问出了故障:
运行 composer install
后会出现 404 并从源仓库开始下载,导致下载速度非常慢。这种情况即使是你全局配置了加速镜像也会出现:
问题: 如何把 composer.lock
文件里的这些 "url": "https://packagist.phpcomposer.com/file...
下载地址变为新的加速进行的地址呢?
解决方案
1. 配置新镜像
首先配置你的新镜像为全局镜像:
1 | $ composer config -g repo.packagist composer https://packagist.laravel-china.org |
2. 刷新 composer.lock 文件
使用以下命令:
1 | $ composer update nothing |
或者:
1 | $ composer update --lock |
–lock: 只升级 lock 文件的哈希以消除 lock 文件过期的警告。
执行成功后:
3. 测试一下
清空本地缓存:
1 | $ rm -rf vendor |
执行安装命令:
1 | $ composer install -vvv |
享受高速下载:
常见问题
问: 此操作是否会升级依赖版本?
答: 不会,只会在 composer.lock
中将旧的依赖下载地址更新为新的,版本保持不变。
问: 线上环境里已经下载了依赖到 vendor
文件夹,是否需要删了再重新下载?
答: 不需要,如上所讲,只是更新了下载链接,代码包连哈希都是一样,无需重新下载。