composer
基本用法
# 简介 Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。 Composer 不是一个包管理器。它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 `vendor`)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。 ### 声明依赖关系 比方说,你正在创建一个项目,你需要一个库来做日志记录。你决定使用 [monolog](https://github.com/Seldaek/monolog)。为了将它添加到你的项目中,你所需要做的就是创建一个 `composer.json` 文件,其中描述了项目的依赖关系。 ### 安装 ##### Linux ```shell #局部安装 curl -sS https://getcomposer.org/installer | php #通过 --install-dir 选项指定 Composer 的安装目录 curl -sS https://getcomposer.org/installer | php -- --install-dir=bin #如果上述方法由于某些原因失败了,你还可以通过 php >下载安装器: php -r "readfile('https://getcomposer.org/installer');" | php #全局安装 推荐, 运行 composer 命令就可以使用 Composer 而不需要输入 php composer.phar。 curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer ``` ##### 安装 - Windows 下载并且运行 [Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe),它将安装最新版本的 Composer ,并设置好系统的环境变量,因此你可以在任何目录下直接使用 `composer` 命令。 # 基本用法 ### 包名称 包名称由供应商名称和其项目名称构成。通常容易产生相同的项目名称,而供应商名称的存在则很好的解决了命名冲突的问题。它允许两个不同的人创建同样名为 `json` 的库。 ### 包版本 | 名称 | 实例 | 描述 | | :----------- | :-------------------------------------- | :----------------------------------------------------------- | | 确切的版本号 | `1.0.2` | 你可以指定包的确切版本。 | | 范围 | `>=1.0` `>=1.0,<2.0` `>=1.0,<1.1>=1.2` | 通过使用比较操作符可以指定有效的版本范围。 有效的运算符:`>`、`>=`、`<`、`<=`、`!=`。 你可以定义多个范围,用逗号隔开,这将被视为一个**逻辑AND**处理。一个管道符号`|`将作为**逻辑OR**处理。 AND 的优先级高于 OR。 | | 通配符 | `1.0.*` | 你可以使用通配符`*`来指定一种模式。`1.0.*`与`>=1.0,<1.1`是等效的。 | | 赋值运算符 | `~1.2` | 这对于遵循语义化版本号的项目非常有用。`~1.2`相当于`>=1.2,<2.0`。 | ### 安装依赖包 ```shell php composer.phar install xxxxx #局部安装 composer install xxxxx #全局安装 composer update #更新依赖包 composer update monolog/monolo #只想安装或更新一个依赖 ``` ### 自动加载 除了库的下载,Composer 还准备了一个自动加载文件,它可以加载 Composer 下载的库中所有的类文件。使用它,你只需要将下面这行代码添加到你项目的引导文件中: ```php require 'vendor/autoload.php'; ``` ### `composer.lock` - 锁文件 在安装依赖后,Composer 将把安装时确切的版本号列表写入 `composer.lock` 文件。这将锁定改项目的特定版本。 如果不存在 `composer.lock` 文件,Composer 将读取 `composer.json` 并创建锁文件。 # 库(资源包) ### 每一个项目都是一个包 只要你有一个 `composer.json` 文件在目录中,那么整个目录就是一个包。当你添加一个 `require` 到项目中,你就是在创建一个依赖于其它库的包。你的项目和库之间唯一的区别是,你的项目是一个没有名字的包。为了使它成为一个可安装的包,你需要给它一个名称。你可以通过 `composer.json` 中的 `name` 来定义: ```json { "name": "acme/hello-world", //名称 "version": "1.0.0", //指明版本 "require": { "monolog/monolog": "1.0.*" } } ``` 在这种情况下项目的名称为 `acme/hello-world`,其中 `acme` 是供应商的名称。供应商的名称是必须填写的。 > **注意:** 如果你不知道拿什么作为供应商的名称, 那么使用你 github 上的用户名通常是不错的选择。 虽然包名不区分大小写,但惯例是使用小写字母,并用连字符作为单词的分隔。 ### 指明版本 如果你想要手动创建并且真的要明确指定它,你只需要添加一个 `version` 字段: ```json { "version": "1.0.0" } ``` - ##### 标签 > 对于每一个看起来像版本号的标签,都会相应的创建一个包的版本。下面是有效的标签名称的几个例子: > > - 1.0.0 > > - v1.0.0 > > - 1.10.5-RC1 > > - v4.4.4beta2 > > - v2.0.0-alpha > > - v2.0.4-p1 - ##### 分支 > 对于每一个分支,都会相应的创建一个包的开发版本。如果分支名看起来像一个版本号,那么将创建一个如同 `{分支名}-dev` 的包版本号。下面是版本分支名称的一些示例: > > - 1.x > - 1.0 (equals 1.0.x) > - 1.1.x ### 发布到 VCS(线上版本控制系统) 一旦你有一个包含 `composer.json` 文件的库存储在线上版本控制系统(例如:Git),你的库就可以被 Composer 所安装。在这个例子中,我们将 `acme/hello-world` 库发布在 GitHub 上的 `github.com/username/hello-world` 中。 ```js { "name": "acme/blog", "repositories": [ { "type": "vcs", "url": "https://github.com/username/hello-world" #使用 } ], "require": { "acme/hello-world": "dev-master" } } ``` ### 发布到 packagist [Packagist](https://packagist.org/) 是 Composer 主要的一个包信息存储库,它默认是启用的。任何在 packagist 上发布的包都可以直接被 Composer 使用。就像 monolog 它被 [发布在 packagist 上](https://packagist.org/packages/monolog/monolog),我们可以直接使用它,而不必指定任何额外的来源信息。
顶部
收展
底部
[TOC]
目录
基本用法
命令行
composer.json 架构