将子文件夹中各种集成的作曲家供应商文件夹合并到一个根文件夹中

Merge composer vendor folders from various integrations in subfolders into one root folder

我在 app/project 和第 3 方集成(如 Mailchimp、Calendly a.o)之间创建了 tools/bridges,其中许多都有自己的供应商文件夹和文件。

典型的集成如下所示:

/tool1/index.php composer.json ...
/tool1/vendor/
/tool1/mycode/

/tool2/index.php composer.json ...
/tool2/vendor/
/tool2/mycode/

20 多个其他工具的相同结构,其中许多工具都有自己的供应商文件夹。从 GitHub.

下载或安装的最多

我正在尝试进行一些维护并将供应商文件夹集中到项目的根目录中,而不是从每个工具调用供应商文件夹。原因是大多数使用相同的包,例如 PSR、Guzzle、league、composer a.o.

它应该看起来像这样:

/vendor/*

/tool1/index.php composer.json ...
/tool1/mycode/

/tool2/index.php composer.json ...
/tool2/mycode/

我的问题是(由于缺乏这方面的知识)我不确定如何处理每个工具的自动加载文件。显然,每个供应商文件夹中都有一个 autoload.php,专门用于该 1 个工具(我想)。

这是自找麻烦吗?我是否最好将每个工具(包括供应商文件)分开,或者将其移至根文件夹并花一些时间整理我的结构是否是一种好习惯。如果是后者,请告知如何保持正常工作。

这些真的是完全独立的工具,让它们分开,有自己离散的依赖关系。

尝试合并多个 composer.json 文件会使您陷入 dependency-hell,不同的工具需要不兼容的依赖项并且无法 install/update。

并且尝试让一个供应商用于多个项目将是徒劳的,因为许多工具将使用相同依赖项的略有不同的版本。

将所有内容移动到同一个 composer.json 文件的唯一原因是,如果所有内容实际上都是一个项目,并且您需要保证一组版本约束以保持应用程序正常工作