composer 作为 PHP 开发中依赖管理工具,平时经常会用到,今天总结一下常用命令。以下内容均来自 Windows 环境下。
参考文档:
菜鸟教程
官网(一般不用)
中文官网
官方文档
Packagist
中国全量镜像
一、Composer 使用
-
install 命令 (初始化项目的时候会用到)
要使用 Composer,先在项目的目录下创建一个 composer.json 文件,文件描述了项目的依赖关系。{ "require": { "monolog/monolog": "1.2.*" } }
以上文件说明我们需要下载从 1.2 开始的任何版本的 monolog。接下来只要运行以下命令即可安装依赖包:
composer install
使用 composer install 命令安装项目依赖。如果 composer.lock 文件存在,Composer 会从该文件读取依赖版本并安装到 vendor 目录下。如果 composer.lock 文件不存在,Composer 会从 composer.json 文件读取依赖版本并安装。
除了使用 install 命令外,我们也可以使用 require 命令快速的安装一个依赖而不需要手动在 composer.json 里添加依赖信息。
平时用到最多,一般都在框架中安装扩展时候会用到。
composer require monolog/monolog
Composer 会先找到合适的版本,然后更新composer.json文件,在 require 那添加 monolog/monolog 包的相关信息,再把相关的依赖下载下来进行安装,最后更新 composer.lock 文件并生成 php 的自动加载文件。
-
update 命令
# 更新所有依赖-(慎用,会将项目中,所有依赖项全部更新,如果有需要,可以用下面命令更新指定的包) composer update # 更新指定的包 composer update monolog/monolog # 更新指定的多个包 composer update monolog/monolog symfony/dependency-injection # 还可以通过通配符匹配包 composer update monolog/monolog symfony/*
包能升级的版本会受到版本约束的约束,包不会升级到超出约束的版本的范围。例如如果 composer.json 里包的版本约束为 ^1.10,而最新版本为 2.0。那么 update 命令是不能把包升级到 2.0 版本的,只能最高升级到 1.x 版本。
-
remove 命令
remove 命令用于移除一个包及其依赖(在依赖没有被其他包使用的情况下),如果依赖被其他包使用,则无法移除:composer remove monolog/monolog
-
search 命令 (一般不用)
search 命令可以搜索包:composer search monolog # 该命令会输出包及其描述信息,如果只想输出包名可以使用 --only-name 参数: composer search --only-name monolog
-
show 命令 (一般不用)
show 命令可以列出当前项目使用到包的信息:列出所有已经安装的包 composer show 可以通过通配符进行筛选 composer show monolog/* 显示具体某个包的信息 composer show monolog/monolog
二、基本约束
- 精确版本:指定版本。
- 范围:使用比较操作符来指定包的范围。(>,>=,<,<=,!=)
- 通配符:1.0.*相当于>=1.0 <1.1
- 波浪号:~1.2
- 折音号:^1.2.3相当于>=1.2.3 <2.0.0
三、镜像源
默认镜像源:https://repo.packagist.org
查看当前镜像:composer config -g --list --verbose
-
更改阿里云 Composer 全量镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
中国全量镜像:https://mirrors.tencent.com/composer
腾讯云:https://mirrors.cloud.tencent.com/composer
取消配置:composer config -g --unset repos.packagist
-
仅修改当前工程配置,仅当前工程可使用该镜像地址
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
取消配置:
composer config --unset repos.packagist
-
其他
Composer版本升级到最新 :composer self-update 清除缓存 :composer clear 若项目之前已通过其他源安装,则需要更新 composer.lock 文件,执行命令:composer update --lock