【问题标题】:How to add an upper bound to a requirement of an already published package?如何为已发布包的需求添加上限?
【发布时间】:2022-01-07 13:58:30
【问题描述】:

考虑到已经向 packagist.org 发布了 PHP 包的版本(例如 v1.0.0)

{
    ...
    "require": {
        "php": ">=7.0"
    }
}

是否有一种干净的方法可以以某种方式向后移植上限,这样该版本就不会通过 Composer 安装在 PHP 8+ 上?

因此,如果我进行以下更改并发布 v1.0.1,它将不会安装在 PHP 8+ 上,但 v1.0.0 仍然会安装,因为该要求在该标记下没有上限。

- "php": ">=7.0"
+ "php": "^7.0"

v1.0.x 的问题是它太旧了,永远不会支持新版本的语言。这就是为什么我想只允许在 PHP 7 上安装它。


我看到的唯一选项是 hacky:

  • 以新名称发布新包。
  • 或者从 Packagist 和 git 中删除当前和已发布的标签,添加上限,创建具有相同名称的新标签并发布这些标签。但这会改变历史,当前的消费者会参考一些本来可以存在的东西。

我认为不可能以干净的方式进行,但想提出一个问题,因为还没有。

【问题讨论】:

  • 如果有人成功地使用了 PHP 8 的包怎么办?你真的想阻止这种情况吗?我想说,只需使用 php 要求更改更新包,并在自述文件中添加一些内容,说明该包未在 PHP 8 下测试。我认为您确实尝试做的事情没有解决方案。
  • 是的,我想阻止它。当人们回来报告由于在不受支持的语言版本上使用它引起的错误时,它给维护者增加了负担。人们总是可以选择分叉它并最终自己维护它。
  • 我要做的是快速创建一个新版本的包,仅限制 PHP 7。问题模板中可能不支持记住 PHP 8 的简短警告。我认为你除了处理 v1.0.0 上的错误之外别无他法:/

标签: php composer-php


【解决方案1】:

如果不重写历史记录,就无法进行此更改。

发布一个“补丁”版本,简单地更改支持的 PHP 版本。任何提交“问题”的人都应该首先更新到您的库的最新版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2019-06-18
    • 2020-12-20
    • 1970-01-01
    相关资源
    最近更新 更多