编写器包的标准包名格式是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来维护扩展的名称格式(因此在
composer.json
require部分,require为myVendorName/bundles/bundle3
而不是myVendorName/bundle3
)
有办法实现这两点吗?
可以通过git子树拆分实现(1)。使用这种方法,您可以将主存储库的不同目录拆分为一个新的存储库,并将其推送到github。这样,所有的包仍然有自己的存储库,但你只需要维护一个存储库(很多大项目都使用这个,像Symfony, Laravel等)。
不支持(2)。你可以用my_vendor/third-bundle
代替my_vendor/bundles/third
。无论如何,目录并不重要,因为Composer会自动加载包中的所有类(如果它们有正确的自动加载配置)。
可以将所有内容存储在一个git存储库中,并要求使用只编写需要的子包(例如:require only)"myVendorName/toolkit"one_answers"myVendorName/bundles/bundle3")
是的。如果你在不同的项目中有相同的组件,而这些组件可能需要特定的依赖集,那么考虑将它们变成一个可重用的包,而不是一个带有composer.json的空包。还要注意,require-dev
只在根包中解析。
可以使用composer来维护扩展的名称格式在作曲家。Json的require section, require for用"myVendorName/bundles/bundle3"代替"myVendorName/bundle3"
是的。在repositories
中,提供vcs
或package
存储库,并使其解析myVendorName/bundles/bundle3
。vcs
中的url
可能引用本地git的repo。没有简单的方法将"myVendorName/bundle3"别名为"myVendorName/bundles/bundle3",这使得这个想法不切实际。