查看“Composer”的源代码
←
Composer
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看并复制此页面的源代码:
[[Composer官方文档]] ==简介== Composer是PHP的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。 Composer在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。 除了库的下载,Composer 还准备了一个自动加载文件,它可以加载 Composer 下载的库中所有的类文件。使用它,你只需要将下面这行代码添加到你项目的引导文件中: <source lang="php"> require 'vendor/autoload.php'; </source> ==安装== <source lang="bash"> curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer </source> 现在只需要运行composer命令就可以使用Composer而不需要输入php composer.phar。 ==基本用法== 要开始在你的项目中使用 Composer,你只需要一个 composer.json 文件。 ===包版本=== {| class="wikitable" |- !名称 !实例 !描述 |- |确切的版本号||1.0.2||你可以指定包的确切版本。 |- |范围 ||>=1.0 >=1.0,<2.0 >=1.0,<1.1<nowiki>|</nowiki>>=1.2 ||通过使用比较操作符可以指定有效的版本范围。 有效的运算符:>、>=、<、<=、!=。 你可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理。一个管道符号|将作为逻辑OR处理。 AND的优先级高于OR。 |- |通配符||1.0.* ||你可以使用通配符*来指定一种模式。1.0.*与>=1.0,<1.1是等效的。 |- |赋值运算符||~1.2||下一个重要版本(波浪号运算符)。~1.2相当于>=1.2,<2.0。 |} ===安装依赖包=== 获取定义的依赖到你的本地项目,只需要调用install命令。 <source lang="bash"> php composer.phar install </source> 接着前面的例子,这将会找到monolog/monolog的最新版本,并将它下载到vendor目录。 小技巧: 如果你正在使用Git来管理你的项目, 你可能要添加vendor到你的.gitignore文件中。 你不会希望将所有的代码都添加到你的版本库中。 另一件事是install命令将创建一个composer.lock文件到你项目的根目录中。 ===composer.lock - 锁文件=== 在安装依赖后,Composer将把安装时确切的版本号列表写入composer.lock文件。 请提交你应用程序的 composer.lock(包括composer.json)到你的版本库中。install命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略composer.json文件中的定义)。 这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。即使你独自开发项目,在六个月内重新安装项目时,你也可以放心的继续工作,即使从那时起你的依赖已经发布了许多新的版本。 如果不存在composer.lock文件,install命令将读取composer.json并创建锁文件。 要更新你的依赖版本请使用update命令。这将获取最新匹配的版本(根据你的composer.json文件)并将新版本更新进锁文件。 <source lang="bash"> php composer.phar update </source> 如果只想安装或更新一个依赖,你可以白名单它们: <source lang="bash"> php composer.phar update monolog/monolog [...] </source> ==命令行== ===安装 install=== install命令从当前目录读取composer.json文件,处理了依赖关系,并把其安装到vendor目录下。 <source lang="bash"> php composer.phar install </source> 如果当前目录下存在composer.lock文件,它会从此文件读取依赖版本,而不是根据composer.json文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。 如果没有composer.lock文件,composer将在处理完依赖关系后创建它。 ===更新 update=== 为了获取依赖的最新版本,并且升级composer.lock文件,你应该使用update命令。 <source lang="bash"> php composer.phar update </source> 这将解决项目的所有依赖,并将确切的版本号写入composer.lock。 如果你只是想更新几个包,你可以像这样分别列出它们: <source lang="bash"> php composer.phar update vendor/package vendor/package2 </source> 你还可以使用通配符进行批量更新: <source lang="bash"> php composer.phar update vendor/* </source> ===申明依赖 require=== require命令增加新的依赖包到当前目录的composer.json文件中。 <source lang="bash"> php composer.phar require </source> 在添加或改变依赖时, 修改后的依赖关系将被安装或者更新。 如果你不希望通过交互来指定依赖包,你可以在这条令中直接指明依赖包。 <source lang="bash"> php composer.phar require vendor/package:2.* vendor/package2:dev-master </source> ===有效性检测 validate=== 在提交composer.json文件,和创建tag前,你应该始终运行validate命令。它将检测你的composer.json文件是否是有效的 <source lang="bash"> php composer.phar validate </source> ===自我更新 self-update=== 将Composer自身升级到最新版本,只需要运行self-update命令。它将替换你的composer.phar文件到最新版本。 <source lang="bash"> php composer.phar self-update </source> 如果你想要升级到一个特定的版本,可以这样简单的指定它: <source lang="bash"> php composer.phar self-update 1.0.0-alpha7 </source> ===创建项目 create-project=== 你可以使用Composer从现有的包中创建一个新的项目。这相当于执行了一个git clone或svn checkout命令后将这个包的依赖安装到它自己的vendor目录。 此命令有几个常见的用途: * 你可以快速的部署你的应用。 * 你可以检出任何资源包,并开发它的补丁。 * 多人开发项目,可以用它来加快应用的初始化。 要创建基于Composer的新项目,你可以使用"create-project"命令。传递一个包名,它会为你创建项目的目录。你也可以在第三个参数中指定版本号,否则将获取最新的版本。 如果该目录目前不存在,则会在安装过程中自动创建。 <source lang="bash"> php composer.phar create-project doctrine/orm path 2.2.* </source> 此外,你也可以无需使用这个命令,而是通过现有的composer.json文件来启动这个项目。 默认情况下,这个命令会在packagist.org上查找你指定的包。 ==composer.json== ===Root 包=== 某些字段仅适用于“root包”上下文。 config字段就是其中一个例子。只有“root包”可以定义,在依赖包中定义的config字段将被忽略。 一个资源包是不是“root包”,取决于它的上下文。 例:如果你的项目依赖monolog库,那么你的项目就是“root包”。 但是,如果你从GitHub上克隆了monolog为它修复bug, 那么此时monolog就是“root包”。 ===属性=== ====包名 name==== 包的名称,对于需要发布的包(库),这是必须填写的。它包括供应商名称和项目名称,使用 / 分隔。例: <source lang="text"> monolog/monolog igorw/event-source </source> ====描述 description==== 一个包的简短描述。通常这个最长只有一行。对于需要发布的包(库),这是必须填写的。 ====安装类型 type==== 包的安装类型,用来定义安装逻辑。composer原生支持以下4种类型: * library: 这是默认类型,它会简单的将文件复制到vendor目录。 * project: 这表示当前包是一个项目,而不是一个库。 * metapackage: 当一个空的包,包含依赖并且需要触发依赖的安装,这将不会对系统写入额外的文件。因此这种安装类型并不需要一个dist或source。 * composer-plugin: 一个安装类型为composer-plugin的包,它有一个自定义安装类型,可以为其它包提供一个installler。 ====关键字 keywords==== 该包相关的关键词的数组。这些可用于搜索和过滤。 ====许可协议 license==== 包的许可协议,它可以是一个字符串或者字符串数组。可选,但强烈建议提供此内容。 ====作者 authors==== 包的作者。这是一个对象数组。这个对象必须包含以下属性: * name: 作者的姓名,通常使用真名。 * email: 作者的 email 地址。 * homepage: 作者主页的 URL 地址。 * role: 该作者在此项目中担任的角色(例:开发人员 或 翻译)。 一个实例: <source lang="text"> { "authors": [ { "name": "Nils Adermann", "email": "naderman@naderman.de", "homepage": "http://www.naderman.de", "role": "Developer" }, { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", "homepage": "http://seld.be", "role": "Developer" } ] } </source> 可选,但强烈建议提供此内容。 ====Package links==== 下面提到的所有对象,都应该是 包名 到 版本 的映射对象。实例: <source lang="text"> { "require": { "monolog/monolog": "1.0.*" } } </source> ====autoload==== PHP autoloader 的自动加载映射。 ====repositories (root-only)==== 默认情况下composer只使用packagist作为包的资源库。通过指定资源库,你可以从其他地方获取资源包。支持以下类型的包资源库: * composer: 一个composer类型的资源库,是一个简单的网络服务器(HTTP、FTP、SSH)上的packages.json文件,它包含一个composer.json对象的列表,有额外的dist和/或source信息。这个packages.json文件是用一个PHP流加载的。你可以使用options参数来设定额外的流信息。 * vcs: 从git、svn和hg取得资源。 * pear: 从pear获取资源。 * package: 如果你依赖于一个项目,它不提供任何对composer的支持,你就可以使用这种类型。你基本上就只需要内联一个composer.json对象。 注意: 顺序是非常重要的,当 Composer 查找资源包时,它会按照顺序进行。默认情况下 Packagist 是最后加入的,因此自定义设置将可以覆盖 Packagist 上的包。 ==资源库== ===包=== 一个包本质上就是一个包含东西的目录。通常情况下它存储PHP代码,但在理论上它可以是任何东西。 Composer除了名称和版本号,还存放了有用的元数据。与安装关系最密切的是source信息,它申明了在哪里可以获得资源包的内容。 ===资源库=== 默认情况下已经将Packagist.org注册到Composer。你可以在composer.json中申明更多的资源库,把它们加入你的项目中。 ==使用问题== ===Could not parse version constraint ^1.0: Invalid version string "^1.0"=== 表面原因是phpunit的版本号使用了^,而composer不支持,导致更新失败。在2014年12月composer已经添加了对^的支持,PHPUnit从2015年1月开始使用^,一次更新一下composer的版本即可解决问题。 composer版本太老了,执行下面命令进行更新。 <source lang='bash'> $sudo composer self-update #权限足够可以不加sudo </source> ==常用命令== <source lang="bash"> #安装组件 composer require predis/predis </source>
返回
Composer
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息