2014-01-10 3 views
3

Я пытаюсь создать аналогичную структуру пакетов, такую ​​как Symfony или Sylius. Они имеют родительский пакет с набором дочерних пакетов в подпапке. EG symfony/framework-standard-edition помещает свои пакеты в Symfony/Component, а Sylius помещает их в Sylius/Src. Это частные пакеты, хранящиеся на частной реплике git. Поэтому я не могу использовать упаковщик.Composer PHP Установите пакет внутри родительских пакетов src folder

План состоит в том, чтобы иметь структуру папок, как:

/vendor/MyNamespace/PackageA/src/BundleA 
/vendor/MyNamespace/PackageA/src/BundleB 
/vendor/MyNamespace/PackageA/src/BundleC 
/vendor/MyNamespace/BundleD 
/vendor/MyNamespace/BundleE 

Так расслоения A - C содержатся в пакете А. Пакет требует Связки A - C. Так что я просто должен был бы потребовать MyNamespace/PackageA и три пакета будут установлены в PackageA.

Я попытался установить цель-Dir, но его ввод BundleA внутри

/vendor/MyNamespace/BundleA/PackageA/BundleA 

Поскольку это частный набор операций РЕПО, я должен использовать Satis, чтобы справиться с ними?

ответ

1

Для частных репозиториев использовать satis или просто указать, где ваши частные (git) репозитории используют repositorieshttp://getcomposer.org/doc/05-repositories.md#loading-a-package-from-a-vcs-repository конфигурации.

Я хотел бы использовать для каждого из ваших пакетов отдельного пакета, и я бы бросить идею играть с целевым-каталогом, в качестве целевого режа осуждается http://getcomposer.org/doc/04-schema.md#target-dir

Но это может быть полезно для вас: http://seld.be/

+0

Да В настоящее время я использую репозитории, чтобы перечислить свои личные репозитории. У меня возникают трудности с изменением путей. Я хочу включить набор пакетов (или компонентов) в родительский пакет. EG/vendor/MynameSpace/src будет включать BundleA и BundleB – pfwd

+0

Зачем вам это нужно? Какая польза от этого? Композитор работает, используя плоскую структуру, я не думаю, что это возможно. – jasir

+0

Это уберет структуру моих связок. У Symfony и Sylius есть множество пучков, которые могут использоваться индивидуально или использоваться в целом. Я хотел бы сделать то же самое. Допустим, у меня есть куча пучков, которые касаются автомобильных деталей, таких как wheelBundle и doorBundle. Я хочу сделать это, чтобы скрыть эти два в carBundle. Они будут храниться в поставщике/CarBundle/src/WheelBundle и поставщике/carBundle/src/doorbundle. Компонент автомобиля будет действовать как контейнер (как и набор модулей Symfony) для этих компонентов. – pfwd

0

Я придумал решение с использованием поддерева git. Разделение дочерних компонентов в свои собственные хранилища и добавление их в качестве подструктуры родительского репозитория. EG:

/Car.git (Parent repository) 
/Door.git (Child component of car) 
/Engine.git (Child component of car) 

В автомобиле:

/Car/src/ 
     DoorBundle 
     EngineBundle 
    /bin (Contains some generic commands) 
    /composer.json (Contains requirements for Door and engine) 

дверь не требует двигателя и двигателя не требует двери. Но автомобиль требует того и другого.

С помощью поддерева git у меня есть контроль над структурой родительских папок. Также, используя target-dir (еще не пробовал с psr-4), я могу сказать композитору, где искать моих дочерних компоновщиков.

Другим преимуществом является повторное использование и изоляция дочерних компонентов. Я могу просто использовать Дверь или Двигатель самостоятельно. Возможно, однажды я создам грузовик, которому нужен еще один двигатель или что-то еще.

Смежные вопросы