Как сделать композитор НЕ создавать каталог .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.lockcomposer.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