Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。
Composer 不是一个包管理工具。它涉及「packages」和「libraries」,但它在每个项目的基础上进行管理,在某个项目的目录中(例如 vender
)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅只是一个依赖管理。
假设情况是这样:
你有一个项目依赖于若干个库。
其中一些库依赖于其他库。
使用 Composer:
你声明你所依赖的库。
Composer 会找出哪个版本的包需要安装,并安装它们(也就是下载到你的项目中)。
运行 Composer 需要 PHP 5.3.2+ 版本。
由于直接安装包的源码,而不是简单的下载 zip 文件。所以如果要进行版本管理,则需要 Git 或 SVN 等。
Composer 支持多平台,我们努力使它在 Windows、Linux 以及 OSX 平台上运行的同样出色。
Composer 提供便利的安装程序,直接在命令行下运行它就可以。点击下载,如果需要了解更多信息,可以在 GitHub 上查看,源码是 PHP。
有两种方式安装 Composer。局部安装只安装到项目中;全局安装则安装到整个系统中,可以在任意地方执行。
局部安装
在项目目录下执行命令:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
如果满足安装要求,会下载文件 composer.phar
到当前目录下。
然后执行以下命令进行安装:
php composer-setup.php --install-dir=bin --filename=composer
运行 Composer:
php bin/composer
全局安装
先下载文件,可以把 composer.phar
放在任意目录下。如果该目录添加到了环境变量 PATH
中,则可以全局调用。
例如:
mv composer.phar /usr/local/bin/composer
运行 Composer:
composer
下载 并运行安装程序,它会自动设置好环境变量,所以你可以在任意目录下直接运行 composer
命令。
要开始在项目中使用 Composer,只需要一个 composer.json
文件。该文件包含了项目的依赖和其它的一些元数据。
首先要在 composer.json
中指定 require
的值,告诉 Composer 你的项目需要依赖哪些包。
{
"require": {
"monolog/monolog": "1.0.*"
}
}
可以看到,require
里是一个键为「包名称」(如:monolog/monolog
),值为「包版本」(如:1.0.*
)的对象。
包名称由供应商名称和其项目名称构成。通常容易产生相同的项目名称,而供应商名称的存在则很好的解决了命名冲突的问题。举例来说,两个不同的人创建同样名为 json
的库,可以分别命名为 igorw/json
和 seldaek/json
。
在前面的例子中,我们引入的 monolog 版本指定为 1.0.*
。这表示任何从 1.0
开始开发的分支,它将会匹配 1.0.0
、1.0.2
或 1.0.20
。
名称 | 实例 | 描述 |
---|---|---|
指定版本号 |
| 指定具体版本号 |
范围 |
| 通过使用比较操作符可以指定有效的版本范围。有效的运算符: |
通配符 |
| 可以使用通配符 |
赋值运算符 |
| 这对于遵循语义化版本号的项目非常有用。 |
获取定义的依赖到本地项目,只需要运行 install
命令:
composer install
在国内,由于被墙的原因,可以使用国内镜像来加速。
全局配置(推荐)
composer config -g repo.packagist composer https://packagist.laravel-china.org
单独使用
composer config repo.packagist composer https://packagist.laravel-china.org
取消镜像
composer config -g --unset repos.packagist
该命令会读取当前目录下的 composer.json
文件,解析相关依赖并将它们安装到 vendor
目录中。如果是 monolog 将会创建 vendor/monolog/monolog
目录。
如果你正在使用 Git 来管理你的项目,可能要添加
vendor
到.gitignore
文件到中。这样就可以避免把所有的代码添加到版本库中。
另外,install
命令将会创建一个 composer.lock
文件到项目的根目录中,该文件记录了依赖安装时的具体版本号,这将锁定该项目的特定版本。
请提交项目的 composer.lock
(包括 composer.json
)到版本库中。
如果锁文件存在,将会下载指定的版本,忽略 composer.json
文件中的定义。如果不存在 composer.lock
文件,Composer 将读取 composer.json
并创建锁文件。
使用 require
命令来添加新的包:
composer require [package name] [...]
使用 update
命令来更新包:
composer update [package name] [...]
使用 remove
命令来移除包:
composer remove [package name] [...]