composer
composer.json 架构
### 包名 `name` > 包的名称,它包括供应商名称和项目名称,使用 `/` 分隔。如 monolog/monolog ### 描述 `description` > 一个包的简短描述。通常这个最长只有一行。对于需要发布的包(库),这是必须填写的。 ### 版本 `version` > `version` 不是必须的,并且建议忽略。 ### 安装类型 `type` > 包的安装类型,默认为 `library`。建议忽略这个属性,采用默认的。 > > composer 原生支持以下4种类型: > > - **library:** 这是默认类型,它会简单的将文件复制到 `vendor` 目录。 > - **project:** 这表示当前包是一个项目,而不是一个库。 > - **metapackage:** 当一个空的包,包含依赖并且需要触发依赖的安装,这将不会对系统写入额外的文件。 > - **composer-plugin:** 一个安装类型为 `composer-plugin` 的包,它有一个自定义安装类型,可以为其它包提供一个 installler。 ### 关键字 `keywords` > 该包相关的关键词的数组。这些可用于搜索和过滤。实例:logging、events、database。 ### 项目主页 `homepage` > 该项目网站的 URL 地址。可选。 ### 版本发布时间 `time` > 版本发布时间。必须符合 `YYYY-MM-DD` 或 `YYYY-MM-DD HH:MM:SS` 格式。可选。 ### 许可协议 `license` > 包的许可协议,它可以是一个字符串或者字符串数组。可选,但强烈建议提供此内容。最常见的许可协议的推荐写法(按字母排序): > > - Apache-2.0 > > - BSD-4-Clause > > - GPL-3.0+ > > - LGPL-3.0+ > > - MIT > > ```json > { > "license": "MIT" > } > > { > "license": [ > "LGPL-2.1", > "GPL-3.0+" > ] > } > > { > "license": "(LGPL-2.1 or GPL-3.0+)" > } > ``` ### 作者 `authors` > 包的作者。可选,但强烈建议提供此内容。这是一个对象数组。这个对象必须包含以下属性: > > - **name:** 作者的姓名,通常使用真名。 > > - **email:** 作者的 email 地址。 > > - **homepage:** 作者主页的 URL 地址。 > > - **role:** 该作者在此项目中担任的角色(例:开发人员 或 翻译)。 > > ```json > { > "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:** 网址浏览或下载源。 > > ```json > { > "support": { > "email": "support@example.org", > "irc": "irc://irc.freenode.org/composer" > } > } > ``` ### Package links > 安装包列表。可选。 > > ```json > { > "require": { > "monolog/monolog": "1.0.*" > } > } > ``` ### suggest > 建议安装的包,它们增强或能够与当前包良好的工作。这些只是信息,并显示在依赖包安装完成之后,给你的用户一个建议,他们可以添加更多的包。 > > ```json > { > "suggest": { > "monolog/monolog": "Allows more advanced logging of the application flow" > } > } > ``` ### autoload > PHP autoloader 的自动加载映射。 > > ```json > { > "autoload": { > "psr-4": { > "Monolog\\": "src/", > "Vendor\\Namespace\\": "" > } > } > } > ``` ### prefer-stable (root-only) > 当此选项被激活时,Composer 将优先使用更稳定的包版本。 > > 使用 `"prefer-stable": true` 来激活它。 ### repositories (root-only) > 使用自定义的包资源库。默认情况下 composer 只使用 packagist 作为包的资源库。通过指定资源库,你可以从其他地方获取资源包。 > > 顺序是非常重要的,当 Composer 查找资源包时,它会按照顺序进行。默认情况下 Packagist 是最后加入的,因此自定义设置将可以覆盖 Packagist 上的包。 > > ```json > { > "repositories": [ > { > "type": "composer", > "url": "http://packages.example.com" > }, > { > "type": "composer", > "url": "https://packages.example.com", > "options": { > "ssl": { > "verify_peer": "true" > } > } > }, > { > "type": "vcs", > "url": "https://github.com/Seldaek/monolog" > }, > { > "type": "pear", > "url": "http://pear2.php.net" > }, > { > "type": "package", > "package": { > "name": "smarty/smarty", > "version": "3.1.7", > "dist": { > "url": "http://www.smarty.net/files/Smarty-3.1.7.zip", > "type": "zip" > }, > "source": { > "url": "http://smarty-php.googlecode.com/svn/", > "type": "svn", > "reference": "tags/Smarty_3_1_7/distribution/" > } > } > } > ] > } > ``` ### scripts (root-only) > Composer 允许你在安装过程中的各个阶段挂接脚本。 ### extra > 可选。任意的,供 `scripts` 使用的额外数据。.这可以是几乎任何东西。若要从脚本事件访问处理程序,你可以这样做: > > ```php > $extra = $event->getComposer()->getPackage()->getExtra(); > ``` ### bin > 该属性用于标注一组应被视为二进制脚本的文件,他们会被软链接到(config 对象中的)`bin-dir` 属性所标注的目录,以供其他依赖包调用。可选。 ### archive > 这些选项在创建包存档时使用。可选。支持以下选项: > > **exclude:** 允许设置一个需要被排除的路径的列表。使用与 .gitignore 文件相同的语法。一个前导的(!)将会使其变成白名单而无视之前相同目录的排除设定。前导斜杠只会在项目的相对路径的开头匹配。星号为通配符。 > > ```json > { > "archive": { > "exclude": ["/foo/bar", "baz", "/*.test", "!/foo/bar/baz"] > } > } > ``` > > 在这个例子中我们 include `/dir/foo/bar/file`、`/foo/bar/baz`、`/file.php`、`/foo/my.test` 但排除了 `/foo/bar/any`、`/foo/baz`、`/my.test`。 ### config (root-only) > - **process-timeout:** 默认为 `300`。处理进程结束时间。 > - **use-include-path:** 默认为 `false`。如果为 true,Composer autoloader 还将在 PHP include path 中继续查找类文件。 > - **preferred-install:** 默认为 `auto`。它的值可以是 `source`、`dist` 或 `auto`。这个选项允许你设置 Composer 的默认安装方法。 > - **github-protocols:** 默认为 `["git", "https", "ssh"]`。从 github.com 克隆时使用的协议优先级清单,因此默认情况下将优先使用 git 协议进行克隆。你可以重新排列它们的次序,例如,如果你的网络有代理服务器或 git 协议的效率很低,你就可以提升 https 协议的优先级。 > - **github-oauth:** 一个域名和 oauth keys 的列表。 例如:使用 `{"github.com": "oauthtoken"}` 作为此选项的值, 将使用 `oauthtoken` 来访问 github 上的私人仓库,并绕过 low IP-based rate 的 API 限制。 [关联知识](https://docs.phpcomposer.com/articles/troubleshooting.html#api-rate-limit-and-oauth-tokens) 关于如何获取 GitHub 的 OAuth token。 > - **vendor-dir:** 默认为 `vendor`。通过设置你可以安装依赖到不同的目录。 > - **bin-dir:** 默认为 `vendor/bin`。如果一个项目包含二进制文件,它们将被连接到这个目录。 > - **cache-dir:** unix 下默认为 `$home/cache`,Windows 下默认为 `C:\Users\<user>\AppData\Local\Composer`。用于存储 composer 所有的缓存文件。相关信息请查看 [COMPOSER_HOME](https://docs.phpcomposer.com/03-cli.html#composer-home)。 > - **cache-files-dir:** 默认为 `$cache-dir/files`。存储包 zip 存档的目录。 > - **cache-repo-dir:** 默认为 `$cache-dir/repo`。存储 `composer` 类型的 VCS(`svn`、`github`、`bitbucket`) repos 目录。 > - **cache-vcs-dir:** 默认为 `$cache-dir/vcs`。此目录用于存储 VCS 克隆的 `git`/`hg` 类型的元数据,并加快安装速度。 > - **cache-files-ttl:** 默认为 `15552000`(6个月)。默认情况下 Composer 缓存的所有数据都将在闲置6个月后被删除,这个选项允许你来调整这个时间,你可以将其设置为0以禁用缓存。 > - **cache-files-maxsize:** 默认为 `300MiB`。Composer 缓存的最大容量,超出后将优先清除旧的缓存数据,直到缓存量低于这个数值。 > - **prepend-autoloader:** 默认为 `true`。如果设置为 false,composer autoloader 将不会附加到现有的自动加载机制中。这有时候用来解决与其它自动加载机制产生的冲突。 > - **autoloader-suffix:** 默认为 `null`。Composer autoloader 的后缀,当设置为空时将会产生一个随机的字符串。 > - **optimize-autoloader** Defaults to `false`. Always optimize when dumping the autoloader. > - **github-domains:** 默认为 `["github.com"]`。一个 github mode 下的域名列表。这是用于GitHub的企业设置。 > - **notify-on-install:** 默认为 `true`。Composer 允许资源仓库定义一个用于通知的 URL,以便有人从其上安装资源包时能够得到一个反馈通知。此选项允许你禁用该行为。 > - **discard-changes:** 默认为 `false`,它的值可以是 `true`、`false` 或 `stash`。这个选项允许你设置在非交互模式下,当处理失败的更新时采用的处理方式。`true` 表示永远放弃更改。`"stash"` 表示继续尝试。Use this for CI servers or deploy scripts if you tend to have modified vendors.
顶部
收展
底部
[TOC]
目录
基本用法
命令行
composer.json 架构