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

时间:2014-05-15 07:05:56

标签: php zend-framework2 composer-php dependency-management

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

Zend Framework 2实际上也是这个主题的原因。

它获得了Composer的基础知识。但是根据我当前的服务器设置,我有一个请求,如果可能,我似乎无法弄明白。

让我解释一下。

我有多个Zend Framework 2项目:

  • /家/的Morten /位点/项目-1 /
  • /家/的Morten /位点/项目-2 /
  • /家/的Morten /位点/项目-3 /

所有这些项目都应该运行ZF2。在每个项目中运行composer时 - 每个项目都会自己单独下载ZF2 Library文件。我的设置有点多余。

我有一个完整的ZF2图书馆下载地址: 的/ var / WWW /共享/的Zend /

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

有可能让Composer在其设置中使用。因为如果我尝试更改内容并在composer文件中尝试,那么它只是重新下载Zend,因为它是其他模块的必需组件。

可以这样做吗?如果是,我该怎么做?

希望我已经足够好地解释自己了解我想要做什么和想做什么:)

提前多多感谢!

此致 的Morten

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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