有没有像npm版本一样工作的PHP/Composer工具?

问题描述 投票:0回答:3

是否有一种自动更新composer.json中的版本号并在发布前添加必要标签的方法,就像

npm version
那样?

我的意思是,如果你有一个包含

"version": "2.1.3"
行的composer.json,并执行:

composer version minor

它将执行以下操作:

  • composer.json
    中的版本号更新为
    2.2.0
  • 触发
    composer update
    更新
    composer.lock
  • 制作新
    git commit
  • 制作新的 git 标签
    v2.2.0

我知道

composer version
命令不存在,但是有等效的工具吗?

php git composer-php
3个回答
2
投票

npm version
可以完成 Composer 可能不需要的功能:

  • 如果有其他可用的方法,则版本号不会记录在
    composer.json
    中 - 并且因为您稍后会提到 Git,所以它们是可用的。
  • 无需更新锁定文件中的依赖关系。当您正在处理的项目包含在其他地方时,锁定文件将被忽略。
  • 因为项目中没有任何更改,所以
    git commit
    不会执行任何操作。
  • 所有这一切都让您在 Git 存储库中创建一个新标签。将其放入 Composer 中意味着您将一个命令与另一个命令交换,没有任何大的好处,此外,如果您使用一些相关的
    version
    参数,您将不必查找正在处理的当前版本号。

总而言之,我想说,对于 Composer 来说,简单地标记您的新版本就足够了。您可能需要准备一些基础设施并进行配置,以使世界了解新版本:

  • 如果您的软件包是开源的并且在 packagist.org 上,您应该有一个提交后挂钩,以便在新版本可用时立即通知他们。这是Github上的标准选项,我不知道其他源代码主机。
  • 否则,如果您必须提供封闭源代码,您可能会开始一个新的更新周期,用于创建替代包信息源的任何系统(无论是 Satis、本地托管的 Packagist、Toran Proxy 还是 Private Packagist)

但这取决于您如何设置。


1
投票

如果出于某种原因,尽管有人反对,你仍然想使用OP要求的工具,https://www.npmjs.com/package/composer-version效果很好。


0
投票

我偶然发现了这个,因为我的composer.json 中也有一个版本。我在过去的某个时候添加了它,因为我得到了

“Composer 无法检测根包(drupal/recommended-project)版本,默认为‘1.0.0’。请参阅 https://getcomposer.org/root-version”

错误和过去的我,虽然“哦,我想这是强制性的”

但是跑步

composer validate
揭示了

./composer.json 有效,但有一些警告 有关架构的详细信息,请参阅https://getcomposer.org/doc/04-schema.md

    版本字段存在,如果包发布在Packagist上,建议将其省略。
这基本上就是斯文在他的回答中已经描述的

如果包存储库可以从某处推断版本(例如 VCS 存储库中的 VCS 标记名称),则为可选。在这种情况下,也建议省略它。

Packagist 使用 VCS 存储库,因此上面的说法对于 Packagist 来说也非常正确。自己指定版本很可能最终会由于人为错误而在某些时候产生问题。

© www.soinside.com 2019 - 2024. All rights reserved.