【问题标题】:composer vendor name format for nested directory嵌套目录的作曲家供应商名称格式
【发布时间】:2015-10-11 00:09:38
【问题描述】:

作曲家包的标准包名格式是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 维护扩展名称格式(所以在 composer.json 要求部分,要求 myVendorName/bundles/bundle3 而不是 myVendorName/bundle3

有没有办法达到这两点?

【问题讨论】:

    标签: php git composer-php directory-structure


    【解决方案1】:

    您可以通过使用 git subtree split 来实现(1)。使用此方法,您将主存储库的单独目录拆分为一个新存储库并将其推送到 github。这样一来,所有的包仍然有自己的仓库,但你只需要维护一个仓库(很多大项目都使用这个,比如 Symfony、Laravel 等)。

    (2) 不受支持。你可以使用my_vendor/third-bundle 代替my_vendor/bundles/third。无论如何,目录并不重要,因为 Composer 将完美地自动加载包内的所有类(如果它们具有正确的自动加载配置)。

    【讨论】:

      【解决方案2】:

      可以将所有内容存储在一个 git 存储库中并使用 仅作曲家所需的子包(例如:仅需要 "myVendorName/toolkit" 和 "myVendorName/bundles/bundle3")

      是的。如果您在不同的项目中有相同的组件可能需要特定的依赖项集,请考虑将它们设置为可重用的包,而不是使用 composer.json 的空包。另请注意 require-dev 正在解析 only in root package

      可以使用 composer 来维护扩展的名称格式(所以 在 composer.json 要求部分,要求 “myVendorName/bundles/bundle3”而不是“myVendorName/bundle3”

      是的。在repositories 中,提供vcspackage 存储库并使其解析myVendorName/bundles/bundle3vcs 中的 url 可以参考本地 git repo。没有简单的方法将“myVendorName/bundle3”别名为“myVendorName/bundles/bundle3”,这使得这个想法不切实际。

      【讨论】:

        猜你喜欢
        • 2018-10-27
        • 2014-04-27
        • 2016-08-30
        • 2018-05-11
        • 2012-08-09
        • 2014-08-08
        • 1970-01-01
        • 2018-07-07
        • 2018-09-11
        相关资源
        最近更新 更多