我正在尝试在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
我的一些文件,仅为了清晰起见:
{
"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"
]
}
}
}
web: vendor/bin/heroku-php-apache2 public/
{
"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"
}
}
{
"directory": "public/assets/"
}
https://github.com/heroku/heroku-buildpack-nodejs
https://github.com/heroku/heroku-buildpack-php
{
"name": "multitest",
"version": "0.0.0",
"description": "",
"author": "",
"license": "ISC",
"dependencies": {
"bower": "~1.3.3"
},
"engines": {
"node": "4.0.0"
}
}
更新
我设法bower install
将package.json
更改为:
{
"dependencies": {
"bower": "^1.5.2"
},
"engines": {
"node": "4.0.0"
},
"scripts": {
"postinstall": "bower cache clean && bower install"
}
}
然而,我一直保持这个问题的开放,直到我收到一个解释良好的答案,关于在heroku上使用bower与php的完整过程。
答案 0 :(得分:0)
您可以尝试将post-install-cmd
和post-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