Composer PHP在父包src文件夹中安装一个包

时间:2014-01-10 19:55:36

标签: git symfony composer-php

我正在尝试创建类似Symfony或Sylius的捆绑结构。它们具有父包,子包中包含一组子包。 EG symfony / framework-standard-edition将其捆绑在Symfony / Component中,Sylius将它们放在Sylius / Src中 这些是存储在私有git仓库中的私有捆绑包。所以我不能使用packagist。

计划是有一个文件夹结构,如:

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

因此捆绑包A - C包含在包A中。 包A需要捆绑包A - C.所以我只需要要求MyNamespace / PackageA,并将三个包安装到PackageA中。

我已尝试设置target-dir但将其置于BundleA

/vendor/MyNamespace/BundleA/PackageA/BundleA

由于这是一套私人回购,我应该使用满意的处理吗?

2 个答案:

答案 0 :(得分:1)

对于私人存储库使用满意或只是说明您的私人(git)存储库使用repositories http://getcomposer.org/doc/05-repositories.md#loading-a-package-from-a-vcs-repository配置。

我会为你的每个包使用单独的包,我会放弃使用target-dir,因为target-dir已被弃用http://getcomposer.org/doc/04-schema.md#target-dir

但这对您有所帮助:http://seld.be/

答案 1 :(得分:0)

我已经提出了使用git子树的解决方案。 将子组件拆分到它们自己的存储库中,并将它们添加为父存储库的子tress。 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)我可以告诉作曲家在哪里寻找我的孩子组件。

另一个好处是子组件的可重用性和隔离性。我可以自己使用门或引擎。也许有一天我会制造一辆需要另外发动机的卡车。