#php #composer-php
#php #композитор-php
Вопрос:
Учтите, что был опубликован релиз (например, версия v1.0.0) пакета PHP для packagist.org с
{ ... "require": { "php": "gt;=7.0" } }
Есть ли ЧИСТЫЙ способ каким-то образом перенести верхнюю границу, чтобы релиз не был установлен на PHP 8 с помощью composer?
Поэтому , если я внесу следующие изменения и опубликую v1.0.1
, он не будет установлен на PHP 8 , но v1.0.0
все равно будет установлен, поскольку требование не имеет верхней границы под этим тегом.
- "php": "gt;=7.0" "php": "^7.0"
Проблема с v1.0.x заключается в том, что он старый и никогда не будет поддерживать более новую версию языка. Вот почему я хотел бы разрешить установку только на PHP 7.
Единственные варианты, которые я вижу, — это хаки:
- Либо опубликуйте новый пакет под новым именем.
- Или удалите текущие и опубликованные теги из Packagist и git, добавьте верхнюю границу, создайте новые теги с теми же именами и опубликуйте их. Но это изменило бы историю, и нынешние потребители ссылались бы на то, что должно было существовать.
Я считаю, что это невозможно сделать чисто, но хотел бы задать вопрос, так как его еще нет.
Комментарии:
1. Что делать, если кто-то успешно использовал пакет с PHP 8 ? Вы действительно хотите предотвратить это ? Я бы сказал, просто обновите пакет с изменением требований php и добавьте в readme что-нибудь, объясняющее, что пакет не тестируется под PHP 8. Я не думаю, что есть решение для того, что вы действительно пытаетесь сделать.
2. Да, я хочу предотвратить это. Это увеличивает нагрузку на сопровождающего, поскольку люди возвращаются и сообщают об ошибках, вызванных его использованием в неподдерживаемых языковых версиях. У людей всегда есть возможность раскошелиться и в конечном итоге поддерживать его самостоятельно.
3. Что бы я сделал, так это быстро создал новую версию вашего пакета с ограничениями на PHP 7, не более того. Возможно, короткое предупреждение в шаблоне проблемы, чтобы помнить, что PHP 8 не поддерживается. Я не думаю, что вы могли бы сделать что-то большее, кроме как разобраться с ошибкой, допущенной в версии v1.0.0 :/
Ответ №1:
Невозможно внести это изменение, не переписав историю.
Выпустите версию «исправления», которая просто изменяет поддерживаемую версию PHP. Любой, кто отправит «проблему», должен для начала обновить вашу библиотеку до последней версии.