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
2
$ rm -rf vendor
$ composer clear-cache

执行安装命令:

1
$ composer install -vvv

享受高速下载:

常见问题

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

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