Композитор: огромная папка поставщика

Я экспериментирую с Composer и, исходя из фона RubyGems/Bundler, проявляет интересное поведение.

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

В то время как Laravel действительно предлагает много функциональности, я обнаружил, что размер будет странным, поэтому я просмотрел содержимое папки поставщика и обнаружил, что он содержит не только код, но также модульные тесты, документацию и целые истории git, Для Swiftmailer я даже нашел llghty RFC для различных стандартов электронной почты.

В то время как удобно обращаться к спецификациям и истории хранилища для зависимостей, он создает довольно трудоемкий процесс развертывания и помещает производственный сервер с нерелевантными данными.

Я понимаю, что я, вероятно, мог бы написать команду artisan для "создания" приложения и удаления пыли из зависимостей, запустив все истории git, но это похоже на грязное решение проблемы, которая, вероятно, уже решена.

Итак, возникает вопрос: существует ли подход к установке зависимостей композитора, поэтому загружается только код, необходимый для запуска приложения (Laravel)?

Обновление: с помощью --prefer-dist

Я обнаружил, что вы можете передать параметр --prefer-dist при создании нового проекта .e.g

composer create-project laravel/laravel my-new-project --prefer-dist

Это делает Composer предпочтительным для zip-дистрибутивов по получению источника непосредственно из VCS (например, GitHub)

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

Ответ 1

Моя папка поставщика имеет размер около 17 МБ. Не уверен, что пошло не так с вашей установкой, но 70 МБ - это не тот размер, который у него должен быть. Я использую Laravel 4.1. Насколько я помню, я загрузил его из Github как .zip(https://github.com/laravel/laravel/archive/master.zip), а затем пусть Composer выполнит "установку".

Ответ 2

Возможно, вы захотите взглянуть на этот пакет:

https://github.com/barryvdh/laravel-vendor-cleanup

Вы даже можете улучшить это, я не знаю, удалит ли репозитории .git и т.д.