如何正确地使用/更换Composer镜像 作者: LiesAuer 时间: 2019-09-26 分类: 开发 ## 使用/更换镜像 全局(推荐) ```shell composer config -g repo.packagist composer https://xxx.com/composer/ ``` 项目 ```shell composer config repo.packagist composer https://xxx.com/composer/ ``` 取消镜像 ```shell 全局 composer config -g --unset repos.packagist 项目 composer config --unset repos.packagist ``` ## 查看当前镜像 ```shell composer config repositories ``` 输出以下信息 ``` {"packagist.org":{"type":"composer","url":"https:\/\/mirrors.aliyun.com\/composer\/"}} ``` 表示我已成功使用阿里云的镜像 ## 测试镜像效果 ```shell composer require someone/repository ``` 吧啦吧啦一大堆就不截图了,小包或者无其他依赖的话基本秒下载完,大项目也能很快下载完 ------------ 考试重点来了 ## 旧项目的镜像遗留问题 如果你在一个旧的项目进行`install`或者`require`,你可能会发现`Composer`并没有使用镜像或者使用了旧的镜像进行下载,这是怎么回事呢? 这是因为当初你在创建这个项目的时候已经把依赖包的信息写到`composer.lock`里面了,包括镜像地址,见下图,所以你是没办法使用新的镜像的,那怎么解决这个问题呢?  ## 解决方案 1. 删除`composer.lock`,重新`composer install` 不推荐,因为`composer.lock`记录了你当前项目的具体包信息,如果你删除了重新引用,可能会下载到一个新版本的包,在某些时候会对项目造成影响。 2. 对`composer.json`以及`composer.lock`进行全文替换(如果有) 不推荐,对`json`文件进行修改,面临着人工麻烦,出错率高的问题。 3. 使用`composer update --lock` 推荐!指定`--lock`参数只会对`composer.lock`进行更新,不会对包进行版本检查,也就不会有下载新包导致项目破坏问题。等命令执行完,再次检查`composer.lock`,发现镜像地址已更新,问题解决。需要注意的是,每个旧项目都需要重复此操作!  标签: none