使用正确的环境文件将角度应用程序部署到Heroku

时间:2018-01-31 17:07:13

标签: angular heroku deployment

我正在使用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环境的环境变量。但是我如何完成整个周期?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用在Heroku上为您的应用设置的环境变量来创建自己的bash脚本并定义该逻辑。 env变量可以通过编程方式设置,也可以在仪表板上的应用程序设置选项卡上设置。你可以找到更多关于Heroku env vars here的信息。

  1. 在Heroku上的每个环境中配置env变量,如果您使用的是Node.js,则可以使用NODE_ENV var。例如,开发应用将设置为NODE_ENV=development,生产应用设置为NODE_ENV=production

  2. 在项目的根目录上创建一个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
    
  3. heroku-postbuild挂钩上运行bash脚本:

    ...
    "heroku-postbuild": "bash build.sh",
    ...
    
  4. 您可以根据需要修改build.sh