Как сделать композитор НЕ создавать каталог .git для пакета
Я нашел пару связанных сообщений, но на самом деле они не отвечают на мой вопрос.
Скажем, я хочу установить этот пакет:
https://github.com/pear/Net_Socket
выдержка из моего композитора .json:
{
"config": {
"preferred-install": "dist"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/pear/Net_Socket.git"
}
],
"require": {
"pear/net_socket": "*",
}
}
Поэтому мне нужно, чтобы он устанавливался без каталога .git, поэтому он не рассматривается как подмодуль в моем проекте.
Как мне загрузить версию "dist", как говорят другие? Должен ли я отмечать фиксацию?
Ответы
Ответ 1
Если пакет рассматривается как подмодуль git, вы не исключили, что папка vendor
была передана в ваш собственный репозиторий. Рекомендуется добавить папку поставщика к .gitignore
и не передавать эти файлы, но только commit composer.lock
(и composer.json
, конечно).
Кроме того, выполнение composer install --prefer-dist
должно выполнять задание. Обратите внимание, что Composer, похоже, не изменит используемый метод загрузки, если вы передумаете позже. Если Composer обнаруживает клонированное репо, быстрее просто обновить его, а не загружать ZIP и распаковывать его. Если вы хотите изменить это, удалите всю папку vendor
и запустите composer update --prefer-dist
.
Ответ 2
Использование --prefer-dist является единственным нативным решением, но будут ситуации, когда просто не будет доступной упакованной версии, и в этих случаях Composer все равно будет использовать клоны git.
Единственный обходной путь, о котором я знаю, - это запуск сценария очистки после установки composer, который удаляет каталоги Git. Может быть, команда, как это:
find . -type d | grep .git | xargs rm -rf
Будьте осторожны, чтобы запустить это в каталоге вашего поставщика, а не в корневом каталоге.
Ответ 3
composer update --prefer-dist
работает нормально, но может быть проще просто изменить метод загрузки по умолчанию для пакетов composer (composer.json):
{
"config": {
"preferred-install": {
"*": "dist"
}
}
}
https://getcomposer.org/doc/06-config.md#preferred-install