如何使用 Composer 将代码标记为稳定?

Posted

技术标签:

【中文标题】如何使用 Composer 将代码标记为稳定?【英文标题】:How to mark code as stable using Composer? 【发布时间】:2016-04-19 08:03:36 【问题描述】:

我最近遇到了 composer 的变化,这意味着默认 minimum-stabilitystable,而不是将其设置为 dev 我想将我的一些库标记为稳定。

我实际上使用了两个相关的分支,releasedevmaster 分支。每隔一段时间就会有一些东西被合并到release 并标记为新版本。

composer 如何确定我的库的稳定性,是否有分支命名约定、版本号、composer.json 中的键?

谢谢

【问题讨论】:

【参考方案1】:

如果您不是从 github 或类似的存储库获取包,而是从本地路径获取包,“路径”类型,则必须在“composer.json”文件中明确定义版本,它不会从本地 git 标签中找出来。此外,只有当它在 packagegist、github 上不存在时才会安装这样的包,因此如果它存在于本地路径 composer.json "name" 字段中,可能需要临时重命名为其他内容。

【讨论】:

【参考方案2】:

回答问题:

对于 VCS,它是 dev-master 对于包装师,它是*@stable

有关“稳定”或“冻结”作曲家版本的更多信息

冻结稳定

获取最新版本的需求有时很有用,尤其是在审核期间,这就是为什么我制作了一个 composer 包来稳定所有依赖项:Composer Stable Versions (https://github.com/MaximeCulea/Composer-Stable-Versions)。

使用此命令,您对 composer.json 的依赖将自动更改为:

"wpackagist-plugin/wordpress-seo":"6.2"

进入:

"wpackagist-plugin/wordpress-seo":"*@stable"

冻结 Composer 版本

如果之后您打算做相反的事情来获取您测试站点的 composer.lock 的最新版本,这在使站点上线时特别有用,请查看我的另一个 composer 命令:Composer Freeze Versions( https://github.com/MaximeCulea/Composer-Freeze-Versions)。

使用此命令,您对 composer.json 的依赖将被自动锁定:

"wpackagist-plugin/wordpress-seo":"@stable"

进入:

"wpackagist-plugin/wordpress-seo":"6.2"


希望对你有帮助。

【讨论】:

只是为了澄清 dev-master 是 composer (composer git...) 的默认 master 分支的别名,因为任何带有 dev- 前缀的版本规范都定义了必须克隆存储库带有 git 历史记录,而当指定标记时,将检索文件但没有 git 信息 - getcomposer.org/doc/articles/versions.md#branches If you want Composer to check out a branch instead of a tag, you need to point it to the branch using the special dev-* prefix (or sometimes suffix; see below)【参考方案3】:

答案是:Tags。如果您不想使用标签,您也可以使用Alias。但值得一提的是,您应该只在您的软件包稳定时将其标记为稳定,而不是让其他人相信它们是稳定的。

更新:另外一个链接:Stability

【讨论】:

我知道我在某处看到过。所以任何没有 RC、beta、alpha 或 patch 后缀的东西都是稳定的,即使是 0.0.x? 正确。任何有标记的版本,包括 0.0.x,都被认为是稳定的。 stablestability 不会出现在标签或别名链接的任何位置。也许他们在某个时候做到了。 我要指出的是,通过 tags,您需要 VCS tags,就像在 git tags 中一样。我以为composer.json 文件中有一些tags 条目可以设置在某处,但我需要做的只是git tag -a x.y.zgit push --tags。然后在消费者项目上,composer require xxx/yyy 就像一个魅力。 不鼓励从 SO 链接的好例子【参考方案4】:

详细说明 KingCrunch 的答案,因为这对我来说并不是很明显。

来自https://getcomposer.org/doc/02-libraries.md#specifying-the-version

当你在 Packagist 上发布你的包时,它能够从 VCS (git, svn, hg) 信息中推断出版本。这意味着您不必显式声明它。

使用 Github 很容易: https://help.github.com/articles/working-with-tags/

此外:

如果您是手动创建包并且确实必须指定它 明确地,您可以添加一个版本字段:


    "version": "1.0.0" 

【讨论】:

澄清一下,对我来说,问题是我有一个包在它的 composer.json 中指定了这个“版本”字段,这导致我的私有包服务器(Toran 代理)忽略我用 git 添加的标签。

以上是关于如何使用 Composer 将代码标记为稳定?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Composer 从本地 Git 存储库安装标记提交?

如何使用composer创建生产稳定drupal 8项目?

如何将composer设置为全局变量?

Composer 警告:缺少 openssl 扩展。如何在 WAMP 中启用

如何放置稳定的标记(图像上的实心圆圈)。下一帧相机中哪个位置相同?

如何正确使用 Composer 安装 Laravel 扩展包