作曲家包的标准包名称格式为vendor/pkName
。
我有以下目录结构:
- myVendorName
- extensions
- yii2
-Ext1
-Ext2 and so on
- bundles
- bundle1
- bundle2
- bundle3 and so on
- toolkit
- forlder1
- folder2 and so on
这是我在硬盘中提供的组织,但真正的项目如下:
- myVendorName/extensions/yii2/ext1
- myVendorName/extensions/yii2/ext2
- myVendorName/bundles/bundle1
- myVendorName/bundles/bundle2
- myVendorName/bundles/bundle3
- myVendorName/toolkit
我对此有疑问:
可以将所有内容存储在一个git存储库中,并且只需要使用composer所需的子包(例如:仅需要myVendorName/toolkit
和myVendorName/bundles/bundle3
)
可以使用编辑器维护扩展名称格式(因此在composer.json
需要部分,myVendorName/bundles/bundle3
而不是myVendorName/bundle3
需要)
有没有办法达到这两点?
答案 0 :(得分:1)
你可以通过使用git子树分割来实现(1)。使用此方法,将主存储库的单独目录拆分为新存储库并将其推送到github。这样,所有软件包仍然拥有自己的存储库,但您只需维护一个存储库(许多大项目都使用它,如Symfony,Laravel等)。
(2)不受支持。您可以使用my_vendor/third-bundle
而不是my_vendor/bundles/third
之类的内容。该目录并不重要,因为Composer将完美地自动加载包中的所有类(如果它们具有正确的自动加载配置)。
答案 1 :(得分:0)
可以将所有内容存储在一个git存储库中并且需要 composer只需要所需的子包(例如:仅需要 " myVendorName /工具箱"和" myVendorName / bundles / bundle3")
是。如果在不同项目中具有可能需要特定依赖关系集的相同组件,请考虑将它们作为可重用包而不是使用composer.json的空包。另请注意require-dev
正在解决only in root package。
可以使用composer维护扩展名称格式(所以 在composer.json中需要section,require for " myVendorName /捆绑/软件包3"而不是" myVendorName / bundle3"
是。在repositories
中,提供vcs
或package
存储库并使其解析myVendorName/bundles/bundle3
。 url
中的vcs
可以引用本地git repo。没有简单的别名方法" myVendorName / bundle3" as" myVendorName / bundles / bundle3",这使得这个想法不实用。