企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 包版本 ## 指明版本 你需要一些方法来指明自己开发的包的版本,当你在 Packagist 上发布自己的包,它能够从 VCS (git, svn, hg) 的信息推断出包的版本,因此你不必手动指明版本号,并且也不建议这样做。请查看[标签](https://docs.phpcomposer.com/02-libraries.html#Tags)和[分支](https://docs.phpcomposer.com/02-libraries.html#Branches)来了解版本号是如何被提取的。 如果你想要手动创建并且真的要明确指定它,你只需要添加一个`version`字段: ~~~json { "version": "1.0.0" } ~~~ > **注意:**你应该尽量避免手动设置版本号,因为标签的值必须与标签名相匹配。 ### 标签 对于每一个看起来像版本号的标签,都会相应的创建一个包的版本。它应该符合 'X.Y.Z' 或者 'vX.Y.Z' 的形式,`-patch`、`-alpha`、`-beta`或`-RC`这些后缀是可选的。在后缀之后也可以再跟上一个数字。 下面是有效的标签名称的几个例子: * 1.0.0 * v1.0.0 * 1.10.5-RC1 * v4.4.4beta2 * v2.0.0-alpha * v2.0.4-p1 > **注意:**即使你的标签带有前缀`v`, 由于在需要`require`一个[版本的约束](https://docs.phpcomposer.com/01-basic-usage.html#Package-Versions)时是不允许这种前缀的, 因此`v`将被省略(例如标签`V1.0.0`将创建`1.0.0`版本)。 ### 分支 对于每一个分支,都会相应的创建一个包的开发版本。如果分支名看起来像一个版本号,那么将创建一个如同`{分支名}-dev`的包版本号。例如一个分支`2.0`将产生一个`2.0.x-dev`包版本(加入了`.x`是出于技术的原因,以确保它被识别为一个分支,而`2.0.x`的分支名称也是允许的,它同样会被转换为`2.0.x-dev`)。如果分支名看起来不像一个版本号,它将会创建`dev-{分支名}`形式的版本号。例如`master`将产生一个`dev-master`的版本号。 下面是版本分支名称的一些示例: * 1.x * 1.0 (equals 1.0.x) * 1.1.x > **注意:**当你安装一个新的版本时,将会自动从它`source`中拉取。 详细请查看[`install`](https://docs.phpcomposer.com/03-cli.html#install)命令。 ### 别名 它表示一个包版本的别名。例如,你可以为`dev-master`设置别名`1.0.x-dev`,这样就可以通过 require`1.0.x-dev`来得到`dev-master`版本的包。 详细请查看[“别名”](https://docs.phpcomposer.com/articles/aliases.html)。 在前面的例子中,我们引入的 monolog 版本指定为`1.0.*`。这表示任何从`1.0`开始的开发分支,它将会匹配`1.0.0`、`1.0.2`或者`1.0.20`。 版本约束可以用几个不同的方法来指定。 | 名称 | 实例 | 描述 | | --- | --- | --- | | 确切的版本号 | `1.0.2` | 你可以指定包的确切版本。 | | 范围 | `>=1.0``>=1.0,<2.0``>=1.0,<1.1|>=1.2` | 通过使用比较操作符可以指定有效的版本范围。 有效的运算符:`>`、`>=`、`<`、`<=`、`!=`。 你可以定义多个范围,用逗号隔开,这将被视为一个**逻辑AND**处理。一个管道符号`|`将作为**逻辑OR**处理。 AND 的优先级高于 OR。 | | 通配符 | `1.0.*` | 你可以使用通配符`*`来指定一种模式。`1.0.*`与`>=1.0,<1.1`是等效的。 | | 赋值运算符 | `~1.2` | 这对于遵循语义化版本号的项目非常有用。`~1.2`相当于`>=1.2,<2.0`。想要了解更多,请阅读下一小节。 | ### 下一个重要版本(波浪号运算符) `~`最好用例子来解释:`~1.2`相当于`>=1.2,<2.0`,而`~1.2.3`相当于`>=1.2.3,<1.3`。正如你所看到的这对于遵循[语义化版本号](http://semver.org/)的项目最有用。一个常见的用法是标记你所依赖的最低版本,像`~1.2`(允许1.2以上的任何版本,但不包括2.0)。由于理论上直到2.0应该都没有向后兼容性问题,所以效果很好。你还会看到它的另一种用法,使用`~`指定最低版本,但允许版本号的最后一位数字上升。 > **注意:**虽然`2.0-beta.1`严格地说是早于`2.0`,但是,根据版本约束条件, 例如`~1.2`却不会安装这个版本。就像前面所讲的`~1.2`只意味着`.2`部分可以改变,但是`1.`部分是固定的。 ### 稳定性 默认情况下只有稳定的发行版才会被考虑在内。如果你也想获得 RC、beta、alpha 或 dev 版本,你可以使用[稳定标志](https://docs.phpcomposer.com/04-schema.html#Package-links)。你可以对所有的包做[最小稳定性](https://docs.phpcomposer.com/04-schema.html#minimum-stability)设置,而不是每个依赖逐一设置。