嵌套目录的作曲家供应商名称格式
composer vendor name format for nested directory
composer 包的标准包名格式是 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
要求部分,需要 myVendorName/bundles/bundle3
而不是 myVendorName/bundle3
)
有没有办法达到这两点?
你可以通过使用git子树分裂来实现(1)。使用此方法,您将主存储库的单独目录拆分为一个新存储库并将其推送到 github。这样,所有的包仍然有自己的存储库,但你只需要维护一个存储库(很多大项目都使用它,比如 Symfony,Laravel,等等)。
(2) 不受支持。您可以使用 my_vendor/third-bundle
之类的东西来代替 my_vendor/bundles/third
。目录无论如何都不重要,因为 Composer 会完美地自动加载包内的所有 类(如果它们具有正确的自动加载配置)。
It's possible to store all in one git repository and require with
composer only the needed subpackages (for example: require only
"myVendorName/toolkit" and "myVendorName/bundles/bundle3")
是的。如果您在可能需要特定依赖集的不同项目中有相同的组件,请考虑将它们设为可重用的包,而不是 composer.json 的空包。另请注意 require-dev
正在解析 only in root package.
It's possible to maintain the extended name format with composer (so
in composer.json require section, require for
"myVendorName/bundles/bundle3" instead of "myVendorName/bundle3"
是的。在 repositories
中,提供 vcs
或 package
存储库并使其解析 myVendorName/bundles/bundle3
。 vcs
中的 url
可能指的是本地 git 仓库。没有简单的方法可以将 "myVendorName/bundle3" 别名为 "myVendorName/bundles/bundle3",这使得这个想法不切实际。
composer 包的标准包名格式是 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
要求部分,需要myVendorName/bundles/bundle3
而不是myVendorName/bundle3
)
有没有办法达到这两点?
你可以通过使用git子树分裂来实现(1)。使用此方法,您将主存储库的单独目录拆分为一个新存储库并将其推送到 github。这样,所有的包仍然有自己的存储库,但你只需要维护一个存储库(很多大项目都使用它,比如 Symfony,Laravel,等等)。
(2) 不受支持。您可以使用 my_vendor/third-bundle
之类的东西来代替 my_vendor/bundles/third
。目录无论如何都不重要,因为 Composer 会完美地自动加载包内的所有 类(如果它们具有正确的自动加载配置)。
It's possible to store all in one git repository and require with composer only the needed subpackages (for example: require only "myVendorName/toolkit" and "myVendorName/bundles/bundle3")
是的。如果您在可能需要特定依赖集的不同项目中有相同的组件,请考虑将它们设为可重用的包,而不是 composer.json 的空包。另请注意 require-dev
正在解析 only in root package.
It's possible to maintain the extended name format with composer (so in composer.json require section, require for "myVendorName/bundles/bundle3" instead of "myVendorName/bundle3"
是的。在 repositories
中,提供 vcs
或 package
存储库并使其解析 myVendorName/bundles/bundle3
。 vcs
中的 url
可能指的是本地 git 仓库。没有简单的方法可以将 "myVendorName/bundle3" 别名为 "myVendorName/bundles/bundle3",这使得这个想法不切实际。