【发布时间】: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