如何为已发布包的需求添加上限?
Posted
技术标签:
【中文标题】如何为已发布包的需求添加上限?【英文标题】: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 上的错误之外别无他法:/ 【参考方案1】:如果不重写历史记录,就无法进行此更改。
发布一个“补丁”版本,简单地更改支持的 PHP 版本。任何提交“问题”的人都应该首先更新到您的库的最新版本。
【讨论】:
以上是关于如何为已发布包的需求添加上限?的主要内容,如果未能解决你的问题,请参考以下文章