Почему Composer устанавливает каталоги .git или .hg с файлами пакетов?

Я пытаюсь опубликовать пакет композитора. Я сохранил composer.json в моем каталоге пакетов:

{
    "name": "vendor_name/my_bundle",
    "type": "symfony-bundle",
    "autoload": {
        "psr-0": {
            "VendorName\\MyBundle": ""
        }
    },
    "target-dir": "VendorName/MyBundle"
}

Но когда я его установлю (обновление для композитора), файлы пакетов будут добавлены в каталог .hg.

Аналогичное поведение можно увидеть в этом пакете: https://packagist.org/packages/tom32i/file-bundle (с файлами пакетов будет добавлен каталог .git: http://joxi.ru/uploads/prod/20130201/560/53a/136c5290b3c0f4c6f6318445f358d1d8cf30fe13.png)

Ответ 1

Цитата из документации:

Существует два способа загрузки пакета: source и dist. Для стабильных версий композитор будет использовать dist по умолчанию. Источник - это репозиторий управления версиями.

Пакет, который вы упомянули, не имеет стабильной версии, поэтому композитор загружает источник из git. Используйте --prefer-dist, если вы хотите, чтобы композитор загружал файлы пакетов (только если это возможно).

Ответ 2

Ответ Jakub отлично подходит и полностью гвоздивает решение...

Чтобы навсегда указать версию dist, просто добавьте preferred-install в ваш файл composer.json:

{
    "config": {
        "preferred-install": "dist"
    }
}