update 04-schema.md

This commit is contained in:
成武 2014-01-06 19:17:55 +08:00
parent e028a89500
commit 8f2e2ad2ea
1 changed files with 33 additions and 46 deletions

View File

@ -15,7 +15,7 @@
如果你克隆了其中的一个依赖包直接在其上开始工作那么它就变成了“root 包”。与作为他人的依赖包时使用相同的 `composer.json` 文件,但上下文发生了变化。
> **注意:** 一个资源包是不是“root 包”,取决于它的上下文。
> 例:如果你的项目依赖 `monolog`那么你的项目就是“root 包”。
> 例:如果你的项目依赖 `monolog`那么你的项目就是“root 包”。
> 但是,如果你从 GitHub 上克隆了 `monolog` 为它修复 bug
> 那么此时 `monolog` 就是“root 包”。
@ -25,7 +25,7 @@
包的名称,它包括供应商名称和项目名称,使用 `/` 分隔。
例:
* monolog/monolog
* igorw/event-source
@ -44,7 +44,7 @@
它应该符合 'X.Y.Z' 或者 'vX.Y.Z' 的形式, `-dev`、`-patch`、`-alpha`、`-beta` 或 `-RC` 这些后缀是可选的。在后缀之后也可以再跟上一个数字。
例:
1.0.0
1.0.2
@ -70,7 +70,7 @@
composer 原生支持以下4种类型
- **library:** 这是默认类型,它会简单的将文件复制到 `vendor` 目录。
- **project:** 这表示当前包是一个项目,而不是一个库。例:框架应用程序 [Symfony standard edition](https://github.com/symfony/symfony-standard),内容管理系统 [SilverStripe installer](https://github.com/silverstripe/silverstripe-installer) 或者完全成熟的分布式应用程序。使用 IDE 创建一个新的工作区时,这可以为其提供项目列表的初始化。
- **project:** 这表示当前包是一个项目,而不是一个库。例:框架应用程序 [Symfony standard edition](https://github.com/symfony/symfony-standard),内容管理系统 [SilverStripe installer](https://github.com/silverstripe/silverstripe-installer) 或者完全成熟的分布式应用程序。使用 IDE 创建一个新的工作区时,这可以为其提供项目列表的初始化。
- **metapackage:** 当一个空的包,包含依赖并且需要触发依赖的安装,这将不会对系统写入额外的文件。因此这种安装类型并不需要一个 dist 或 source。
- **composer-plugin:** 一个安装类型为 `composer-plugin` 的包,它有一个自定义安装类型,可以为其它包提供一个 installler。详细请查看 [自定义安装类型](articles/custom-installers.md)。
@ -80,7 +80,7 @@ composer 原生支持以下4种类型
该包相关的关键词的数组。这些可用于搜索和过滤。
例:
logging
events
@ -128,7 +128,7 @@ composer 原生支持以下4种类型
对于闭源软件,你必须使用 `"proprietary"` 协议标识符。
一个例
一个例:
{
"license": "MIT"
@ -136,7 +136,7 @@ composer 原生支持以下4种类型
对于一个包,当允许在多个许可协议间进行选择时("disjunctive license"),这些协议标识符可以被指定为数组。
多协议的一个例
多协议的一个例:
{
"license": [
@ -162,9 +162,9 @@ composer 原生支持以下4种类型
* **name:** 作者的姓名,通常使用真名。
* **email:** 作者的 email 地址。
* **homepage:** 作者主页的 URL 地址。
* **role:** 该作者在此项目中担任的角色(例:开发人员 或 翻译)。
* **role:** 该作者在此项目中担任的角色(例:开发人员 或 翻译)。
一个例
一个例:
{
"authors": [
@ -198,7 +198,7 @@ composer 原生支持以下4种类型
* **irc:** IRC 聊天频道地址,类似于 irc://server/channel。
* **source:** 网址浏览或下载源。
一个例
一个例:
{
"support": {
@ -213,7 +213,7 @@ composer 原生支持以下4种类型
下面提到的所有对象,都应该是 包名 到 [版本](01-basic-usage.md#包版本) 的映射对象。
例:
{
"require": {
@ -223,9 +223,9 @@ composer 原生支持以下4种类型
所有的这些都是可选的。
`require``require-dev` 还支持稳定性标签(@仅针对“root 包”)。这允许你在 [minimum-stability](#minimum-stability) 设定的范围外做进一步的限制或扩展。例:如果你想允许依赖一个不稳定的包,你可以在一个包的版本约束后使用它,或者是一个空的版本约束内使用它。
`require``require-dev` 还支持稳定性标签(@仅针对“root 包”)。这允许你在 [minimum-stability](#minimum-stability) 设定的范围外做进一步的限制或扩展。例:如果你想允许依赖一个不稳定的包,你可以在一个包的版本约束后使用它,或者是一个空的版本约束内使用它。
例:
{
"require": {
@ -236,7 +236,7 @@ composer 原生支持以下4种类型
如果你的依赖之一,有对另一个不稳定包的依赖,你最好在 require 中显示的定义它,并带上足够详细的稳定性标识。
例:
{
"require": {
@ -247,7 +247,7 @@ composer 原生支持以下4种类型
`require``require-dev` 还支持对 dev开发版本的明确引用版本控制系统中的提交编号 commit以确保它们被锁定到一个给定的状态即使你运行了更新命令。你只需要明确一个开发版本号并带上诸如 `#<ref>` 的标识。
例:
{
"require": {
@ -298,7 +298,7 @@ simply list it in `provide`.
格式如下,版本约束变成了描述信息。
例:
{
"suggest": {
@ -316,11 +316,11 @@ PHP autoloader 的自动加载映射。
`psr-0` key 下你定义了一个命名空间到实际路径的映射(相对于包的根目录)。注意,这里同样支持 PEAR-style 方式的约定与命名空间不同PEAR 类库在类名上采用了下划线分隔)。
请注意,命名空间的申明应该以 `\\` 结束,以确保 autoloader 能够准确响应。例 `Foo` 将会与 `FooBar` 匹配,然而以反斜杠结束就可以解决这样的问题, `Foo\\``FooBar\\` 将会被区分开来。
请注意,命名空间的申明应该以 `\\` 结束,以确保 autoloader 能够准确响应。例: `Foo` 将会与 `FooBar` 匹配,然而以反斜杠结束就可以解决这样的问题, `Foo\\``FooBar\\` 将会被区分开来。
在 install/update 过程中PSR-0 引用都将被结合为一个单一的键值对数组,存储至 `vendor/composer/autoload_namespaces.php` 文件中。
例:
{
"autoload": {
@ -332,7 +332,7 @@ PHP autoloader 的自动加载映射。
}
}
如果你需要搜索多个目录中一个相同的前缀,你可以将它们指定为一个数组,例
如果你需要搜索多个目录中一个相同的前缀,你可以将它们指定为一个数组,例:
{
"autoload": {
@ -362,7 +362,7 @@ PSR-0 方式并不仅限于申明命名空间,也可以是精确到类级别
你可以用 classmap 生成支持支持自定义加载的不遵循 PSR-0 规范的类库。要配置它指向需要的目录,以便能够准确搜索到类文件。
例:
{
"autoload": {
@ -374,7 +374,7 @@ PSR-0 方式并不仅限于申明命名空间,也可以是精确到类级别
如果你想要明确的指定,在每次请求时都要载入某些文件,那么你可以使用 'files' autoloading。通常作为函数库的载入方式而非类库
例:
{
"autoload": {
@ -389,7 +389,7 @@ PSR-0 方式并不仅限于申明命名空间,也可以是精确到类级别
一个追加到 PHP `include_path` 中的列表。
例:
{
"include-path": ["lib/"]
@ -418,40 +418,27 @@ Symfony 就是一个例子。它有一些独立的包作为组件。Yaml 组件
### minimum-stability <span>(root-only)</span>
This defines the default behavior for filtering packages by stability. This
defaults to `stable`, so if you rely on a `dev` package, you should specify
it in your file to avoid surprises.
这定义了通过稳定性过滤包的默认行为。默认为 `stable`(稳定)。因此如果你依赖于一个 `dev`(开发)包,你应该明确的进行定义。
All versions of each package are checked for stability, and those that are less
stable than the `minimum-stability` setting will be ignored when resolving
your project dependencies. Specific changes to the stability requirements of
a given package can be done in `require` or `require-dev` (see
[package links](#package-links)).
对每个包的所有版本都会进行稳定性检查,而低于 `minimum-stability` 所设定的最低稳定性的版本,将在解决依赖关系时被忽略。对于个别包的特殊稳定性要求,可以在 `require``require-dev` 中设定(请参考 [package links](#package-links))。
Available options (in order of stability) are `dev`, `alpha`, `beta`, `RC`,
and `stable`.
可用的稳定性标识(按字母排序):`dev`、`alpha`、`beta`、`RC`、`stable`。
### prefer-stable <span>(root-only)</span>
When this is enabled, Composer will prefer more stable packages over unstable
ones when finding compatible stable packages is possible. If you require a
dev version or only alphas are available for a package, those will still be
selected granted that the minimum-stability allows for it.
当此选项被激活时Composer 将优先使用更稳定的包版本。
Use `"prefer-stable": true` to enable.
使用 `"prefer-stable": true` 来激活它。
### repositories <span>(root-only)</span>
Custom package repositories to use.
使用自定义的包资源库。
By default composer just uses the packagist repository. By specifying
repositories you can get packages from elsewhere.
默认情况下 composer 只使用 packagist 作为包的资源库。通过指定资源库,你可以从其他地方获取资源包。
Repositories are not resolved recursively. You can only add them to your main
`composer.json`. Repository declarations of dependencies' `composer.json`s are
ignored.
Repositories 并不是递归调用的只能在“Root包”的 `composer.json` 中定义。附属包中的 `composer.json` 将被忽略。
The following repository types are supported:
支持以下类型的包资源库:
* **composer:** A composer repository is simply a `packages.json` file served
via the network (HTTP, FTP, SSH), that contains a list of `composer.json`
@ -466,9 +453,9 @@ The following repository types are supported:
composer whatsoever you can define the package inline using a `package`
repository. You basically just inline the `composer.json` object.
For more information on any of these, see [Repositories](05-repositories.md).
更多相关内容,请查看 [资源库](05-repositories.md)。
Example:
例:
{
"repositories": [