当前位置:K88软件开发文章中心编程工具Composer → 文章内容

Composer 资源库

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-24 10:15:08

由 小路依依 创建, 最后一次修改 2016-08-12 资源库本章将解释包和库的概念,什么样的存储库是可用的,以及它们如何工作。概述在此之前,我们看到存在不同类型的资源库,我们需要了解一些基本概念,以理解 Composer 是如何构建于其上的。包Composer 是一个依赖管理工具。它在本地安装一些资源包。一个包本质上就是一个包含东西的目录。通常情况下它存储 PHP 代码,但在理论上它可以是任何东西。并且它包含一个描述,其中有一个名称和一个版本号,这个名称和版本号用于识别该包。事实上,在 composer 内部将每一个版本都视为一个单独的包。尽管在你使用 composer 时这种区别无关紧要,但当你想改变它时,这就显得至关重要。除了名称和版本号,还存放了有用的元数据。与安装关系最密切的是 source 信息,它申明了在哪里可以获得资源包的内容。包数据指向包内容,并有两种指向方式:dist 和 source。Dist: dist 指向一个存档,该存档是对一个资源包的某个版本的数据进行的打包。通常是已经发行的稳定版本。Source: source 指向一个开发中的源。这通常是一个源代码仓库,例如 git。当你想要对下载下来的资源包进行修改时,可以这样获取。你可以使用其中任意一个,或者同时使用。这取决于其它的一些因素,比如“user-supplied 选项”和“包的稳定性”,前者将会被优先考虑。资源库一个资源库是一个包的来源。它是一个 packages/versions 的列表。Composer 将查看所有你定义的 repositories 以找到你项目需要的资源包。默认情况下已经将 Packagist.org 注册到 Composer。你可以在 composer.json 中申明更多的资源库,把它们加入你的项目中。资源库的定义仅可用于“root 包”,而在你依赖的包中定义的资源库将不会被加载。如果你想了解其中的原因,请阅读 FAQ entry。TypesComposer主资源库的类型为 composer。它使用一个单一的 packages.json 文件,包含了所有的资源包元数据。这也是 packagist.org 所使用的资源类型。要引用一个 composer 资源库,只需要提供一个存放 packages.json 文件的 目录路径。比如要引用 packagist.org 下的 /packages.json,它的 URL 就应该是 packagist.org。而 example.org/packages.json 的 URL 应该是 example.org。packages唯一必须的字段是 packages。它的 JSON 结构如下:{ "packages": { "vendor/package-name": { "dev-master": { @composer.json }, "1.0.x-dev": { @composer.json }, "0.0.1": { @composer.json }, "1.0.0": { @composer.json } } }}@composer.json 标记将会从此包的指定版本中读取 composer.json 的内容,其内至少应包含以下信息:nameversiondist or source这是一个最简单的包定义:{ "name": "smarty/smarty", "version": "3.1.7", "dist": { "url": "http://www.smarty.net/files/Smarty-3.1.7.zip", "type": "zip" }}它还可以包含任何在 composer.json 架构 中介绍的字段。notify-batchnotify-batch 字段允许你指定一个 URL,它将会在用户安装每一个包时被调用。该 URL 可以是(与其资源库相同域名的)绝对路径或者一个完整的 URL 地址。例如使用下面的值:{ "notify-batch": "/downloads/"}对于 example.org/packages.json 包含的 monolog/monolog 包,它将会发送一个 POST 请求到 example.org/downloads/,使用下面的 JSON request body:{ "downloads": [ {"name": "monolog/monolog", "version": "1.2.1.0"}, ]}version 字段将包含标准化的版本号。notify-batch 字段是可选的。includes对于较大的资源库,可以拆分 packages.json 为多个文件。includes 字段允许你引用这些额外的文件。实例:{ "includes": { "packages-2011.json": { "sha1": "525a85fb37edd1ad71040d429928c2c0edec9d17" }, "packages-2012-01.json": { "sha1": "897cde726f8a3918faf27c803b336da223d400dd" }, "packages-2012-02.json": { "sha1": "26f911ad717da26bbcac3f8f435280d13917efa5" } }}文件的 SHA-1 码允许它被缓存,仅在 hash 值改变时重新请求。此字段是可选的。你也许并不需要它来自定义存储库。provider-includes and providers-url的对于非常大的资源库,像 packagist.org 使用 so-called provider 文件是首选方法。provider-includes 字段允许你设置一个列表,来申明这个资源库提供的包名称。在这种情况下文件的哈希算法必须使用 sha256。providers-url 描述了如何在服务器上找到这些 provider 文件。它是以资源库的根目录为起点的绝对路径。实例:{ "provider-includes": { "providers-a.json": { "sha256": "f5b4bc0b354108ef08614e569c1ed01a2782e67641744864a74e788982886f4c" }, "providers-b.json": { "sha256": "b38372163fac0573053536f5b8ef11b86f804ea8b016d239e706191203f6efac" } }, "providers-url": "/p/%package%$%hash%.json"}这些文件包含资源包的名称以及哈希值,以验证文件的完整性,例如:{ "providers": { "acme/foo": { "sha256": "38968de1305c2e17f4de33aea164515bc787c42c7e2d6e25948539a14268bb82" }, "acme/bar": { "sha256": "4dd24c930bd6e1103251306d6336ac813b563a220d9ca14f4743c032fb047233" } }}上述文件申明了 acme/foo 和 acme/bar 可以在这个资源库找到,通过加载由 providers-url 引用的文件,替换 %package% 为包名并且替换 %hash% 为 sha256 的值。这些文件本身只包含上文提到的 packages 的定义。这些字段是可选的。你也许并不需要它们来自定义存储库。stream optionspackages.json 文件是用一个 PHP 流加载的。你可以使用 options 参数来设定额外的流信息。你可以设置任何有效的PHP 流上下文选项。更多相关信息请查看 Context options and parameters。VCSVCS 表示版本控制系统。这包括像 git、svn 或 hg 这样的版本管理系统。Composer 有一个资源类型可以从这些系统安装软件包。从 VCS 资源库加载一个包这里有几个用例。最常见的是维护自己

[1] [2] [3]  下一页


Composer 资源库