我正在使用Angular CLI开发Angular4应用程序。 我有环境文件(environments.prod.ts和environments.dev.ts)。 我想在Heroku上创建两个不同的应用程序,每个应用程序都使用不同的环境文件,但两者都是从同一个git仓库部署。
我的应用由NodeJS服务器提供,并在package.json文件中运行此脚本:
product(322940174383) <- bad I want the title not product id
我的Heroku "scripts": {
"heroku-prebuild": "npm install && cd ng-client && npm install && ng build",
"start": "node ./bin/www"
},
看起来像那样:
procfile
我知道最终我需要运行web:npm start
而不是ng build --prod
。
我正在阅读我可以传递给heroku环境的环境变量。但是我如何完成整个周期?
感谢。
答案 0 :(得分:0)
您可以使用在Heroku上为您的应用设置的环境变量来创建自己的bash脚本并定义该逻辑。 env变量可以通过编程方式设置,也可以在仪表板上的应用程序设置选项卡上设置。你可以找到更多关于Heroku env vars here的信息。
在Heroku上的每个环境中配置env变量,如果您使用的是Node.js,则可以使用NODE_ENV
var。例如,开发应用将设置为NODE_ENV=development
,生产应用设置为NODE_ENV=production
。
在项目的根目录上创建一个bash脚本文件,例如:build.sh
:
#!/usr/bin/env bash
echo "Building Angular app for $NODE_ENV"
build_dev='ng build'
if [ $NODE_ENV = "development" ]; then
echo "running $build_dev ..."
eval "$build_dev"
fi
build_prod='ng build --prod'
if [ $NODE_ENV = "production" ]; then
echo "running $build_prod ..."
eval "$build_prod"
fi
在heroku-postbuild
挂钩上运行bash脚本:
...
"heroku-postbuild": "bash build.sh",
...
您可以根据需要修改build.sh
。