Composer 快速入门教程
Composer
是PHP
是PHP5.3
以上的一个依赖管理工具,你可以在自己的项目中声明所依赖的外部工具库(libraries)
,Composer
会安装这些依赖的库文件Composer
默认情况下不是全局安装,而是基于指定的项目的某个目录中(例如 vendor)进行安装。Composer
需要PHP 5.3.2+
以上版本,且需要开启openssl
。Composer
可运行在Windows
、Linux
、OSX
平台上。Composer
仅仅是一个依赖关系的管理,如同在iOS
开发中使用的CocoaPods
,前端开发中使用的NPM
。
composer -v #查看版本
阿里云 Composer 全量镜像
https://developer.aliyun.com/composer
全局配置(推荐)
- 所有项目都会使用该镜像地址:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 取消配置:
composer config -g --unset repos.packagist
项目配置
- 仅修改当前工程配置,仅当前工程可使用该镜像地址:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
- 取消配置:
composer config --unset repos.packagist
调试
- composer 命令增加 -vvv 可输出详细的信息,命令如下:
composer -vvv require alibabacloud/sdk
遇到问题?
- \1. 建议先将Composer版本升级到最新:
composer self-update
- \2. 执行诊断命令:
composer diagnose
- \3. 清除缓存:
composer clear
- \4. 若项目之前已通过其他源安装,则需要更新 composer.lock 文件,执行命令:
composer update --lock
- \5. 配置阿里云和官方两个源,阿里云镜像站下载文件出错时再从官方源上下载。tips:单击复制会出现问题,如需拷贝代码请先选中文本点击鼠标右键进行复制。
{
"repositories": [
{
"description": "阿里云镜像",
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/",
"canonical": false
}
]
}
\6. 重试一次,若还有问题,请到钉钉群:23178217 反映。
安装第三方包
根据composer.json
来安装第三方包
composer install
或者
composer update
只想安装或者更新某个特定的库,不想更新它的所有依赖,则可以使用
composer install foo/bar
composer update foo/bar
实例操作记录:
bogon:untitled4 zhoumengkang$ ls
composer.json composer.lock vendor
bogon:untitled4 zhoumengkang$ rm -rf vendor/
bogon:untitled4 zhoumengkang$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 28 installs, 0 updates, 0 removals
- Installing webmozart/assert (1.3.0): Loading from cache
...
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (^1.1)
Generating autoload files
composer.lock
在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定该项目的特定版本。
请提交你应用程序的 composer.lock (包括 composer.json)到你的版本库中。这是非常重要的,因为 install 命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json 文件中的定义)。
这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。即使你独自开发项目,在六个月内重新安装项目时,你也可以放心的继续工作,即使从那时起你的依赖已经发布了许多新的版本。
自动加载优化
composer dump-autoload --optimize
能够大大减少系统自动加载时间。
项目使用
- 要使用
Composer
,需要先在项目的目录下创建一个composer.json
文件,文件描述了项目的依赖关系。
{
"require": {
"monolog/monolog": "1.2.*"
}
}
- 以上文件说明我们需要下载从
1.2
开始的任何版本的monolog
。 - 安装依赖包:
$ composer install
- 移除安装包
$ composer remove monolog/monolog
require
命令,除了使用install
命令外,也可以使用require
命令快速的安装一个依赖而不需要手动在composer.json
里添加依赖信息。
$ composer require monolog/monolog
Composer
会先找到合适的版本,然后更新composer.json
文件,在require
那添加monolog/monolog
包的相关信息,再把相关的依赖下载下来进行安装,最后更新composer.lock
文件并生成php
的自动加载文件。
其他常用命令
- 查看版本信息,以及所有命令介绍
$ composer -v
- 创建项目,创建一个名称为
test
的thinkPHP
项目
$ composer create-project topthink/think test
search
命令
$ composer search monolog
- 该命令会输出包及其描述信息,如果只想输出包名可以使用
--only-name
参数:
$ composer search --only-name monolog
show
命令:
// 列出所有已经安装的包
$ composer show
// 可以通过通配符进行筛选
$ composer show monolog/*
// 显示具体某个包的信息
$ composer show monolog/monolog
- 下载依赖(全局安装)
$ composer install
- 更新依赖
// 更新所有依赖
$ composer update
// 更新指定的包
$ composer update monolog/monolog
// 更新指定的多个包
$ composer update monolog/monolog symfony/dependency-injection
// 还可以通过通配符匹配包
$ composer update monolog/monolog symfony/*
- 升级到最新版本,如果有则更新到最新版本
$ composer selfupdate
- 诊断命令
$ composer diagnose
- 清除缓存
$ composer clear
- 若项目之前已通过其他源安装,则需要更新 composer.lock 文件
$ composer update --lock
- 重新加载一次(例如:当在
Laravel
中删除了文件,会存在缓存,这个时候就需要重新加载一次清理掉缓存)。
$ composer autoload-dump
// 可简写
$ composer dump
Composer常见的 例子
3.1 查找并安装依赖包
composer search packageName
composer require packageName
3.2 更新依赖包
composer update
3.3 安装指定版本的依赖包
composer require packageName:version
3.4 卸载依赖包
composer remove packageName
3.5 查看当前项目依赖包列表
composer show
3.6 初始化composer.json文件
composer init
3.7 安装生产环境依赖包
composer install --no-dev
3.8 安装开发环境依赖包
composer install --dev
3.9 冻结(锁定)依赖包版本
composer lock
3.10 安装依赖在指定的目录
composer install --prefer-dist --no-dev --optimize-autoloader --working-dir=dirName
3.11 下载依赖包并自动加载
require 'vendor/autoload.php';
3.12 生成autoload.php文件
composer dump-autoload
3.13 创建项目快速启动代码
composer create-project --prefer-dist laravel/laravel projectName
3.14 安装国内镜像加速
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
3.15 清理缓存
composer clear-cache
3.16 运行脚本
composer run-script scriptName
3.17 降级依赖包
composer update packageName --with-dependencies --prefer-lowest
3.18 展示依赖包的依赖关系
composer depends packageName
3.19 比较两个版本之间的差异
composer diff packageName version1 version2
3.20 显示指定依赖包的详细信息
composer show packageName --all