composer的安装条件
要使用 composer 首先是要安装它;安装 composer 的前提要求是已经有 php 环境了,同时需要开启 openssl 和 fileinfo 扩展;
官方网站:Composer
国内中文网站:Composer 中文网 / Packagist 中国全量镜像
Comopser资源库:https://packagist.org
1、使用PHP命令下载composer-setup.php
# cd /mydata
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# 解析
# php composer-setup.php
出现如下:
2、将Composer设为全局变量
# 放入可执行目录
# mv /mydata/composer.phar /usr/local/bin/composer
3、测试是否成功
# 测试(任意目录)
# composer
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? yes <----- 提示权限问题,这里输入yes即可
出现:
OK 成功
4、切换到国内镜像
# composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
6、测试
# composer create-project topthink/think tp
7、composer常用命令
1、常用全局命令
# composer 打印所有命令
# composer -V 版本号
# composer --version 版本号
# composer self-update 更新composer版本为最新版
显示本项目下已经安装的包
# composer show
或
# composer info
# composer clearcache 清理缓存
2、初始化
# comooser init 用于创建新项目的composer.json
初始化参数:
--name: 包的名称。
--description: 包的描述。
--author: 包的作者。
--homepage: 包的主页。
--require: 需要依赖的其它包,必须要有一个版本约束。并且应该遵循 foo/bar:1.0.0 这样的格式。
--require-dev: 开发版的依赖包,内容格式与 --require 相同。
--stability (-s): minimum-stability 字段的值。
3、安装命令install
大多时候我们git克隆过来的项目是没有vendor目录的,这就需要我们进行安装,根据项目根目录下的composer.json.lock文件进行下载插件,此文件里指定了包的名称、下载地址、版本号等
# composer install 安装所有composer.json.lock文件里指定的插件包
常用安装参数
--prefer-dist composer将尽可能的从dist获取,这将大幅度的加快在 build servers 上的安装。这也是一个回避 git 问题的途径,如果你不清楚如何正确的设置
--prefer-source 下载包的方式有两种:source和dist。对于稳定版本 composer 将默认使用 dist 方式。而 source 表示版本控制源 。如果 --prefer-source 是被启用的,composer 将从 source 安装(如果有的话)。如果想要使用一个 bugfix 到你的项目,这是非常有用的。并且可以直接从本地的版本库直接获取依赖关系。
--dry-run: 如果你只是想演示而并非实际安装一个包,你可以运行 --dry-run 命令,它将模拟安装并显示将会发生什么。 --dev: 安装 require-dev 字段中列出的包(这是一个默认值)。 --no-dev: 跳过 require-dev 字段中列出的包。 --no-scripts: 跳过 composer.json 文件中定义的脚本。 --no-plugins: 关闭 plugins。 --no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。 --optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
4、更新包:update
为了获取依赖的最新版本,并且升级 composer.lock 文件
# composer update
这将解决项目的所有依赖,并将确切的版本号写入 composer.lock。如果你只是想更新几个包,你可以像这样分别列出它们
# composer update vendor/package vendor/package2
你还可以使用通配符进行批量更新:
# composer update vendor/*
常用更新参数
--prefer-source: 当有可用的包时,从 source 安装。
--prefer-dist: 当有可用的包时,从 dist 安装。
--dry-run: 模拟命令,并没有做实际的操作。
--dev: 安装 require-dev 字段中列出的包(这是一个默认值)。
--no-dev: 跳过 require-dev 字段中列出的包。
--no-scripts: 跳过 composer.json 文件中定义的脚本。
--no-plugins: 关闭 plugins。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
--lock: 仅更新 lock 文件的 hash,取消有关 lock 文件过时的警告。
--with-dependencies 同时更新白名单内包的依赖关系,这将进行递归更新。
5、申明依赖包:require
require 命令增加新的依赖包到当前目录的 composer.json 文件中
# composer require endroid/qrcode 安装一个包
# composet remove endroid/qrcode 卸载依赖, (然后手工删除下载的相关包)
也可以指定版本号
# 指定版本
composer require monolog/monolog 1.24.0
# 版本范围
# 有效的运算符有 >、>=、<、<=、!=,运算符中间使用逗号隔开视作逻辑AND,使用|隔开,视作逻辑OR,AND的优先级更高
# 支持通配符 *
# 支付波浪号运算符 ~ 限定在最低版本和下一个重要版本更新之前
# 以下都是有效的版本号
# 版本大于等于1.0 >=1.0
# 版本大于等于1.0并且小于2.0 >=1.0,<2.0
# 版本大于等于1.0并且小于1.1,或者版本大于等于1.2
>=1.0,<1.1|>=1.2 # 相当于>=1.0,<1.1
1.0.*
# 相当于>=1.2,<2.0
~1.2
# 相当于>=1.2.3,<1.3
~1.2.3
# 相当于>=1.2.3,<2.0.0 在多于2位的版本号的时候跟 ~ 有区别
^1.2.3
常用参数
--prefer-source: 当有可用的包时,从 source 安装。
--prefer-dist: 当有可用的包时,从 dist 安装。
--dev: 安装 require-dev 字段中列出的包。
--no-update: 禁用依赖关系的自动更新。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--update-with-dependencies 一并更新新装包的依赖。
6、删除指定包:remove
删除此包后,对应的composer.json 和composer.json.lock文件也会改变
# composet remove endroid/qrcode 卸载依赖, (然后手工删除下载的相关包)
7、配置 config
# config [options] [setting-key] [setting-value1] ... [setting-valueN]
setting-key 是一个配置选项的名称,setting-value1 是一个配置的值。可以使用数组作为配置的值(像 github-protocols),多个 setting-value 是允许的
参数:
--global (-g): 操作位于 $COMPOSER_HOME/config.json 的全局配置文件。如果不指定该参数,此命令将影响当前项目的 composer.json 文件,或 --file 参数所指向的文件。
--editor (-e): 使用文本编辑器打开 composer.json 文件。默认情况下始终是打开当前项目的文件。当存在 --global 参数时,将会打开全局 composer.json 文件。
--unset: 移除由 setting-key 指定名称的配置选项。
--list (-l): 显示当前配置选项的列表。当存在 --global 参数时,将会显示全局配置选项的列表。
--file="..." (-f): 在一个指定的文件上操作,而不是 composer.json。注意:不能与 --global 参数一起使用。