为多个作曲家使用一个目录

时间:2014-09-09 09:25:50

标签: php composer-php

我将重写这个问题更清楚。我有以下应用程序结构:

applications/
   api/
      public/
      composer.json
   frontend/
      public/
      composer.json
   backend/
      public/
      composer.json
   common/
      vendor/
        ... composer libraries here

如何让每个应用程序的作曲家安装都安装到common/vendor中,这样我就可以在只使用composer update的任何地方获得最新版本的库;同时只加载每个应用程序的composer.json文件中的库。因此,当我包含vendor/autoload.php时,只会加载所需的库。

编辑:编辑整个问题。请重读

1 个答案:

答案 0 :(得分:1)

您必须创建一个更大的元项目,该项目需要API包,前端和后端。您可以定义应该使用哪个目录来为此元项目放置依赖项,并且应该能够为特殊包API,前端和后端定义它们应该进入它们各自的目录而不是公共文件夹。

更新该元数据包必须检查更多依赖项,但保证您获得符合您的版本约束的最新版本(如果您的某个软件包需要较低版本,则可能无法安装最新版本)。这样您就可以避免安装其中一个项目不允许的依赖项,如果您尝试安装冲突版本,则会立即通知您。

请注意,我根本不会推荐这个。我会编写一个脚本,将其放在applications/updatecomposer.sh并添加单独更新每个项目所需的所有命令。您可以获得Composer所具有的所有灵活性,因为基本上您希望将PEAR的中央库安装回来。这种集中安装以及由此导致无法更新任何PEAR包而不会有破坏性的事情是PEAR被认为已经死亡的原因之一。

或者考虑像Zend Framework 1这样的任何前作曲家原始框架。如果您不准备同时处理ALL中的不兼容性,那么将其安装在每个应用程序正在使用的中心点将有效地阻止您更新它。你的申请同时进行。举个例子:从任何ZF 1.11更新到ZF 1.12(当前维护的最新版本)是一个可能向后兼容的变化,因为至少有一个抽象类(处理REST接口)得到了必须实现的新抽象方法