凉亭 - PHP - Heroku

时间:2016-08-23 11:09:47

标签: php node.js heroku bower buildpack

我正在尝试在heroku上部署一个PHP应用程序,并且还有bower。 问题是,尽管heroku同时检测到node.js和php buildpacks,但它并没有运行bower install

我找到了:

这:https://github.com/dzuelke/heroku-multipack-nodejs-php-example/blob/master/.buildpacks

并且:https://github.com/heroku/heroku-buildpack-multi

但不知怎的,我无法让它发挥作用。

任何人都可以解释完整流程吗?

---------------------------------------

heroku buildpacks的输出:

=== athens-night Buildpack URLs
1. https://github.com/heroku/heroku-buildpack-nodejs
2. heroku/php

---------------------------------------

我的一些文件,仅为了清晰起见:

composer.json

{
  "name": "antony/athens-night-backend",
  "description": "Backend for Athen's Night Startup",
  "license": "MIT",
  "authors": [
    {
      "name": "Antony Kalogeropoulos",
      "email": "anthonykalogeropoulos@gmail.com"
    }
  ],
  "require": {
    "php": "^7.0.0",
    "twig/twig": "~1.0",
    "swiftmailer/swiftmailer": "^5.4",
    "vlucas/phpdotenv": "^2.3",
    "ccampbell/chromephp": "^4.1"
  },
  "require-dev": {
    "heroku/heroku-buildpack-php": "*"
  },
  "autoload": {
    "psr-4": {
      "Night\\": "app/"
    },
    "scripts": {
      "compile": [
        "bower install"
      ]
    }
  }
}

Procfile

web: vendor/bin/heroku-php-apache2 public/

bower.json

{
  "name": "athens-night-backend",
  "homepage": "http://athens-night.gr/",
  "authors": [
    "Antony Kalogeropoulos <anthonykalogeropoulos@gmail.com>"
  ],
  "description": "athens nightlife events",
  "main": "",
  "license": "MIT",
  "private": true,
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "dependencies": {
    "gentelella": "^1.3.0"
  }
}

.bowerrc

{
  "directory": "public/assets/"
}

.buildpacks

https://github.com/heroku/heroku-buildpack-nodejs
https://github.com/heroku/heroku-buildpack-php

.package.json

{
  "name": "multitest",
  "version": "0.0.0",
  "description": "",
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bower": "~1.3.3"
  },
  "engines": {
    "node": "4.0.0"
  }
}

更新

我设法bower installpackage.json更改为:

{
  "dependencies": {
    "bower": "^1.5.2"
  },
  "engines": {
    "node": "4.0.0"
  },
  "scripts": {
    "postinstall": "bower cache clean && bower install"
  }
}

然而,我一直保持这个问题的开放,直到我收到一个解释良好的答案,关于在heroku上使用bower与php的完整过程。

2 个答案:

答案 0 :(得分:0)

您可以尝试将post-install-cmdpost-update-cmd添加到composer.json脚本中。

"scripts": {
    "post-install-cmd": [
      "bower install"
    ],
    "post-update-cmd": [
      "bower install"
    ]
  }

鉴于Heroku检测到nodejs。

在这里,Heroku将首先检测nodejs,并通过package.json,它将安装bower。 然后,composer install将运行,最后安装bower组件。

答案 1 :(得分:0)

确保使用nodejs buildpack。在heroku CLI中: heroku buildpacks:add --index 1 heroku/nodejs

您可以使用heroku buildpacks

检查使用过的buildpack