Composer не использует "dist" версии, даже специально сказано

У меня есть зависимость, размещенная в частном репозитории git, и я использую suc для управления пакетами. Я пометил коммит в ветке master репо как "1.0.0", и в файле composer.json, где я хочу использовать этот пакет, я указал

"require": {
  "package/name": "~1.0"
},
"repositories": [
{
  "type": "composer",
  "url": "http://myownsatisrepo"
},
"config": {
  "preferred-install": "dist"
}

и я управляю командой composer install --prefer-dist

Поэтому тот факт, что я указал стабильную версию пакета, должен гарантировать, что композитор не просто клонирует репозиторий (включая папку.git, которая мне не нужна), но вместо этого загружает пакет. Дополнительный флаг конфигурации и параметр для команды установки должны сделать то же самое. Тем не менее, композитор только клонирует пакет, хотя.

1 ответ

Решение

Composer может загрузить дистрибутив ZIP только в том случае, если знает, как его получить. В противном случае (или если получить его не удастся), он будет клонировать хранилище.

Когда вы используете некоторых известных хостеров Git-репозиториев, таких как Github и Bitbucket, Composer знает об их структуре API и о том, где можно загрузить ZIP-файлы. Если вы используете что-то другое, это не так.

Как последний запасной вариант, метаданные в вашем Satis могут теоретически включать URL-адреса загрузки для ZIP-файлов. Satis позволяет настроить создание этих файлов, но тогда у вас будет возможность размещения всех ZIP-файлов в дополнение к метаданным Composer. Если вы не разрешаете Satis создавать ZIP-архивы и используете репозиторий, который не предлагает возможности загрузки, известные Composer, вы всегда будете запускать клонирование репозитория, несмотря ни на что.

Обратите внимание, что как только Composer получит исходный код тем или иным способом, он будет придерживаться его, пока вы не удалите всю папку поставщика. Особенно, если вы клонировали репозиторий, он работает быстрее и использует меньше трафика, если Composer просто обновляет последний коммит, а затем проверяет необходимый коммит.

Другие вопросы по тегам