Composer的安装和使用详解
作者:勇康博客网 | 分类:PHP | 浏览:1402 | 日期:2021年07月29日linux环境
下载
curl -sS https://getcomposer.org/installer | php
下载后设置环境变量
mv composer.phar /usr/local/bin/composer
修改权限
mv composer.phar /usr/local/bin/composer
查看版本
composer -v
windows环境下载安装
下载安装
安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号,建议7.3.4以上php版本。
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
嫌麻烦的朋友也可以直接点击下方安装包下载安装,效果都是一样的
查看版本
命令行窗口运行如下指令,若正常显示版本号则表示安装成功
composer --version
修改Composer镜像源
众所周知的原因,国外的网站连接速度很慢,并且随时可能被“墙”甚至“不存在”,这就是为什么要修改Composer镜像源为国内镜像源
查看当前镜像源
composer config -g repo.packagist
全局修改(以下两个镜像源看个人喜好)
composer config -g repo.packagist composer https://packagist.phpcomposer.com
或:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
单个项目配置
打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com
上述命令将会在当前项目中的 composer.json 文件的末尾自动添加镜像的配置信息(你也可以自己手工添加):
"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }
以 laravel 项目的 composer.json 配置文件为例,执行上述命令后如下所示(注意最后几行):
{ "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "type": "project", "require": { "php": ">=5.5.9", "laravel/framework": "5.2.*" }, "config": { "preferred-install": "dist" }, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } } }
取消Composer镜像源修改
composer config -g --unset repos.packagist
Composer常用指令
升级Composer版本(可能需要先还原镜像源为国外镜像源)
composer self-update
查看全局配置
composer config -gl
install命令
composer install
composer install是从composer.lock读取第三方组件及其版本,并将其安装到vendor目录下。
如果composer.lock文件不存在,则读取composer.json第三方组件及其版本,然后安装到vendor目录下。update是直接从composer.json获取第三方组件及其版本,然后更新composer.lock文件。
如果依赖的第三方组件有版本更新,update会将最新的版本安装到vendor目录下,并更新composer.lock。在生产环境下,直接使用composer update命令是有较大风险的,因为可能存在测试阶段使用了版本的第三方组件库,在上线打包的时候执行了composer update命令,导致第三方组件更新未经测试直接发布的问题出现。
require命令
除了使用 install 命令外,我们也可以使用 require 命令快速的安装一个依赖而不需要手动在 composer.json 里添加依赖信息:
composer require monolog/monolog
Composer 会先找到合适的版本,然后更新composer.json文件,在 require 那添加 monolog/monolog 包的相关信息,再把相关的依赖下载下来进行安装,最后更新 composer.lock 文件并生成 php 的自动加载文件。
update命令
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 Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 0 installs, 0 updates, 2 removals - Removing psr/log (1.0.2) - Removing monolog/monolog (1.23.0) Generating autoload files
search命令
search 命令可以搜索包:
composer search monolog
该命令会输出包及其描述信息,如果只想输出包名可以使用 --only-name 参数:
composer search --only-name monolog
show命令
show 命令可以列出当前项目使用到包的信息:
# 列出所有已经安装的包 $ composer show # 可以通过通配符进行筛选 $ composer show monolog/* # 显示具体某个包的信息 $ composer show monolog/monolog