如何使用 Composer 将代码标记为稳定?
Posted
技术标签:
【中文标题】如何使用 Composer 将代码标记为稳定?【英文标题】:How to mark code as stable using Composer? 【发布时间】:2016-04-19 08:03:36 【问题描述】:我最近遇到了 composer 的变化,这意味着默认 minimum-stability
是 stable
,而不是将其设置为 dev
我想将我的一些库标记为稳定。
我实际上使用了两个相关的分支,release
和 dev
从 master
分支。每隔一段时间就会有一些东西被合并到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#branchesIf 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,都被认为是稳定的。stable
或 stability
不会出现在标签或别名链接的任何位置。也许他们在某个时候做到了。
我要指出的是,通过 tags,您需要 VCS tags,就像在 git tags 中一样。我以为composer.json
文件中有一些tags
条目可以设置在某处,但我需要做的只是git tag -a x.y.z
和git 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 警告:缺少 openssl 扩展。如何在 WAMP 中启用