使用Composer,可以在多个项目之间共享依赖关系吗?

rug*_*ard 5 php dependency-management zend-framework2 composer-php

首先,我对 Composer 完全是个新手。我一直在尝试它,因为它听起来很棒,主要是因为 Zend Framework 2 使用它。

Zend Framework 2 实际上也是这个线程的原因。

它掌握了 Composer 的基础知识。但根据我当前的服务器设置,我有一个请求,我似乎无法弄清楚是否可能。

让我解释。

我有多个 Zend Framework 2 项目:

  • /home/morten/sites/Project-1/
  • /home/morten/sites/Project-2/
  • /home/morten/sites/Project-3/

所有这些项目都应该运行 ZF2。在每个项目中运行 Composer 时,每个项目都会单独下载 ZF2 库文件。这对我的设置来说有点多余。

我有完整且最新的 ZF2 库下载,位于:/var/www/shared/Zend/

我的 php.ini 已将该路径添加到 PHP 的 include_path 中,因此整个 ZF2 库可用于所有三个项目。

是否可以在其设置中使用 Composer?因为如果我尝试更改内容并在作曲家文件中尝试某些内容,那么它只会重新下载 Zend,因为它是其他模块所需的组件。

这可以做到吗?如果是的话,我该怎么做?

希望我已经很好地解释了自己,让你们能够理解我想要做什么和想要什么:)

预先非常感谢!

问候,莫滕

Nic*_*tel 1

您也许可以将一个 composer.json文件存储在 中/var/www/shared/Zend,您可以在其中放置依赖项并使用 Composer 来管理它们。那么所有项目都可以包含相同的自动加载器。

但是,我不推荐这种方法:

  • 您的项目的依赖项 ( composer.json) 应与您的项目一起存储。如果您想将项目安装到其他地方(例如,如果您想将一个项目移动到另一台服务器),则缺少composer.json安装所需依赖项的方法。
  • 如果不更新所有其他项目的依赖关系,就不可能更新一个项目的依赖关系。如果您想在项目 1 中引入一项新功能,该功能需要特定依赖项的新版本,则所有其他项目也将获得此新版本 - 如果项目 2 所依赖的旧功能被更改,则可能会导致向后兼容性中断。不再支持。由于每个依赖项只能有一个版本,因此两个项目不可能拥有同一依赖项的不同版本。

如果所有项目都具有完全相同的功能和代码,那么这种方法可能很有用,但在这种情况下,您可能应该将它们合并到一个项目中。

在所有其他情况下,我建议按照应有的方式使用 Composer:为所有项目提供自己的composer.json文件,并让 Composer 在每个项目的vendor目录中下载每个项目的依赖项。缺点是它会花费更多的磁盘空间,但作为回报,您将获得很大的灵活性。