【问题标题】:Heroku: composer.json in sub folderHeroku:子文件夹中的composer.json
【发布时间】:2016-09-19 21:37:18
【问题描述】:

让我们采用以下文件夹结构:

www/
www/composer.json
www/index.php
www/vendor
www/backend/
www/backend/composer.json
www/backend/index.php
www/backend/vendor

如您所见,我有 2 个项目,其中 1 个项目是主文件夹中的子文件夹。主文件夹与 heroku 一起部署,heroku 自动从 composer.json 安装包。有没有办法指示 heroku 或 composer.json 也在 www/backend/vendor 文件夹中安装 www/backend/composer.json 包?

或者我可以指定 www/compposer.json 中的一些包(不是全部)安装在 www/backend/vendor 文件夹下吗?还要在 www/vendor/ 和 www/backend/vendor/ 中生成 2 个自动加载文件?

【问题讨论】:

  • 在你的根 composer.json 文件中尝试这样的操作:"scripts": { "composer install": "backend"}
  • 所以这会在后端文件夹中运行 composer install 吗?由于部署尚未准备好,我现在无法对此进行测试。
  • 是的,它将在后端安装composer.json,我不确定,但你必须测试这个命令。
  • 你最后搞定了吗?我还希望在 /api 子文件夹中使用我的 php 应用程序和 composer.json 部署到 Heroku。如果有结论,这个问题对人们会更有用:o)
  • 是的,我能够做到这一点,在主 composer.json 中添加以下内容:“scripts”:{“post-install-cmd”:“cd api;composer install;composer update”}

标签: php heroku composer-php


【解决方案1】:

毕竟,我能够在主 composer.json 中添加以下内容:

"scripts" : { "post-install-cmd" : "cd api;composer install;composer 更新”}

【讨论】:

    【解决方案2】:

    对于将来寻找此功能的人: 如by the answer from keepwalking 所示,您可以使用“composer.json”中的“scripts”键,如"Scripts" section of the Composer documentation 中所述。有趣的是,您还可以将数组用于单个事件。

    您可以使用 bash 命令,例如 cdmv,但您也可以使用 && 链接命令。 所以,我的例子是:

    {
      ...
      "scripts": {
        "post-install-cmd": [
          "cd www && composer install",
          "cd www/backend && composer install"
        ]
      }
      ...
    }
    

    这有以下流程:

    1. 您在项目根目录中运行composer install
    2. Composer 完成安装依赖项并发出“post-install-cmd”事件
    3. Composer 运行“post-install-cmd”数组中的第一个命令
    4. Composer 完成“post-install-cmd”数组中的第一个命令
    5. Composer 运行“post-install-cmd”数组中的第二个命令

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-23
      • 2018-02-09
      • 2014-02-09
      • 2017-01-04
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      相关资源
      最近更新 更多