Root包
“root 包”是指由 composer.json 定义的在你项目根目录的包。这是 composer.json 定义你项目所需的主要条件。(简单的说,你自己的项目就是一个 root 包)
某些字段仅适用于“root 包”上下文。config 字段就是其中一个例子。只有“root 包”可以定义。在依赖包中定义的 config 字段将被忽略,这使得 config 字段只有“root 包”可用(root-only)
如果你克隆了其中的一个依赖包,直接在其上开始工作,那么它就变成了“root 包”。与作为他人的依赖包时使用相同的 composer.json 文件,但上下文发生了变化。
属性
包名 name
包的名称,它包括供应商名称和项目名称,使用/分隔。
eg:dept-jccp/zbj_agent
描述 description
包的描述,对于需要发布的包(库),这个是必填的。
版本 version
version不是必须的,可以忽略。
通常,我们能够从 VCS (git, svn, hg) 的信息推断出包的版本号,在这种情况下,我们建议忽略 version。
安装类型 type
包的安装类型,默认为 library。
包的安装类型,用来定义安装逻辑。如果你有一个包需要一个特殊的逻辑,你可以设定一个自定义的类型。这可以是一个 symfony-bundle,一个 wordpress-plugin 或者一个 typo3-module。这些类型都将是具体到某一个项目,而对应的项目将要提供一种能够安装该类型包的安装程序。
composer原生支持以下4种类型:
- library: 这是默认类型,它会简单的将文件复制到vendor目录。
- project: 这表示当前包是一个项目,而不是一个库。例:框架应用程序 Symfony standard edition,内容管理系统 SilverStripe installer 或者完全成熟的分布式应用程序。使用 IDE 创建一个新的工作区时,这可以为其提供项目列表的初始化。
- metapackage: 当一个空的包,包含依赖并且需要触发依赖的安装,这将不会对系统写入额外的文件。因此这种安装类型并不需要一个 dist 或 source。
- composer-plugin: 一个安装类型为 composer-plugin 的包,它有一个自定义安装类型,可以为其它包提供一个 installler。详细请查看 自定义安装类型。
仅在你需要一个自定义的安装逻辑时才使用它。建议忽略这个属性,采用默认的 library。
关键词 keyword
该包相关的关键词的数组。这些可用于搜索和过滤。
项目主页 homepage
该项目网站的 URL 地址。可选。
版本发布时间 time
版本发布时间。
必须符合 YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS 格式。
可选。
许可协议 license
包的许可协议,它可以是一个字符串或者字符串数组。
最常见的许可协议的推荐写法(按字母排序):
- Apache-2.0
- BSD-2-Clause
- BSD-3-Clause
- BSD-4-Clause
- GPL-2.0
- GPL-2.0+
- GPL-3.0
- GPL-3.0+
- LGPL-2.1
- LGPL-2.1+
- LGPL-3.0
- LGPL-3.0+
- MIT
可选。
对于闭源软件,你必须使用 “proprietary” 协议标识符。
1 | { |
对于一个包,当允许在多个许可协议间进行选择时(”disjunctive license”),这些协议标识符可以被指定为数组。
多协议的一个例:
1 | { |
另外它们也可以由 “or” 分隔,并写在括号中:
1 | { |
同样,当有多个许可协议需要结合使用时(”conjunctive license”),它们应该被 “and” 分隔,并写在括号中。
作者 authors
包的作者。这是一个对象数组。
这个对象必须包含以下属性:
- name: 作者的姓名,通常使用真名。
- email: 作者的 email 地址。
- homepage: 作者主页的 URL 地址。
- role: 该作者在此项目中担任的角色(例:开发人员 或 翻译)。可选,但强烈建议提供此内容。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16{
"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"
}
]
}
支持 support
取项目支持的向相关信息对象。
这个对象必须包含以下属性:
- email: 项目支持 email 地址。
- issues: 跟踪问题的 URL 地址。
- forum: 论坛地址。
- wiki: Wiki 地址。
- irc: IRC 聊天频道地址,类似于 irc://server/channel。
- source: 网址浏览或下载源。
1 | { |
Package links
下面提到的所有对象,都应该是 包名 到 版本 的映射对象。
1 | { |
所有的这些都是可选的。
suggest
建议安装的包,它们增强或能够与当前包良好的工作。这些只是信息,并显示在依赖包安装完成之后,给你的用户一个建议,他们可以添加更多的包。
格式如下,版本约束变成了描述信息。
1 | { |
autoload
PHP autoloader 的自动加载映射。
1 | { |
推荐
推荐一些常用的依赖:
- predis/predis
- nesbot/carbon
- react/http-client
- itsgoingd/clockwork
- codeception/verify
- qiniu/php-sdk
- dingo/api
- urmaul/httpclient
- nmred/kafka-php
- ramsey/uuid
- spatie/laravel-pjax
- douyasi/laravel-editor-md