嵌套目录的composer供应商名称格式

时间:2015-10-10 14:02:00

标签: php git composer-php directory-structure

作曲家包的标准包名称格式为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

我对此有疑问:

  1. 可以将所有内容存储在一个git存储库中,并且只需要使用composer所需的子包(例如:仅需要myVendorName/toolkitmyVendorName/bundles/bundle3

  2. 可以使用编辑器维护扩展名称格式(因此在composer.json需要部分,myVendorName/bundles/bundle3而不是myVendorName/bundle3需要)

  3. 有没有办法达到这两点?

2 个答案:

答案 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中,提供vcspackage存储库并使其解析myVendorName/bundles/bundle3url中的vcs可以引用本地git repo。没有简单的别名方法" myVendorName / bundle3" as" myVendorName / bundles / bundle3",这使得这个想法不实用。