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

2023-12-26

我正在使用 Angular CLI 开发 Angular4 应用程序。 我有环境文件(environments.prod.ts 和environments.dev.ts)。 我想在 Heroku 上创建两个不同的应用程序,每个应用程序使用不同的环境文件,但都从同一个 git 存储库进行部署。

我的应用程序由 NodeJS 服务器交付并在 package.json 文件中运行此脚本:

  "scripts": {
    "heroku-prebuild": "npm install && cd ng-client && npm install && ng build",
    "start": "node ./bin/www"
  },

我的赫罗库procfile看起来像这样:

web:npm start

我知道最终我需要跑步ng build --prod代替ng build.

我正在阅读有关可以传递给 heroku 环境的环境变量的信息。但我如何完成整个周期呢?

Thanks.


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

  1. 在 Heroku 上的每个环境上配置 env 变量,如果您使用 Node.js,则可以使用NODE_ENV变种例如,开发应用程序将设置为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. 在以下位置运行您的 bash 脚本heroku-postbuild hook:

    ...
    "heroku-postbuild": "bash build.sh",
    ...
    

您可以修改build.sh根据您的需要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 如何将 key ctrl-left 绑定到 word-left?

    我使用 tcsh 和 emacs 在 emacs 中 我习惯使用 ctrl left 绑定键将我向左移动一个单词 我想在我的 tcsh 终端中做同样的事情 我可以按 ctrl b 但我只是不习惯 从bindkey manpath中我不清楚如
  • 标记和词位有什么区别?

    在 Aho Ullman 和 Sethi 的 Compiler Construction 一书中 给出了源程序的输入字符串被分成具有逻辑含义的字符序列 称为标记 而词位是组成标记的序列 所以什么是基本的区别吗 Using 编译器原理 技术和
  • or 运算符在这段 JavaScript 中起什么作用?

    因此 我浏览 JQuery 源代码以获取更好的编程技巧 并且发现了一些我不确定发生了什么的代码 type type callback 谁能解释一下 OR 是什么 变量赋值是做什么的 我做了一些实验 设置和取消设置值等等 但我一无所知 If
  • elasticsearch best_field 和most_field 有什么区别

    这篇文章我已经准备好了https www elastic co guide en elasticsearch reference current query dsl multi match query html https www elas
  • 如何使用 Sidekiq 运行连续后台作业?

    我一直在成功地使用 Sidekiq 来运行由 Rails 3 2 应用程序中的用户操作启动的后台作业 我的特定应用程序涉及通过第三方 API 从外部源发送和接收数据 我需要通过不断检查每个用户是否有数据可供下载来保持数据与此外部源同步 正如
  • 将一些代码从 C++ 转换为 C [重复]

    这个问题在这里已经有答案了 可能的重复 C 代码编译为 C 但不是 C https stackoverflow com questions 3143052 c code compiles as c but not as c Edit 我将库
  • 如何分割字符串同时忽略括号中的部分?

    我有一个字符串 我想使用逗号作为分隔符将其拆分为一个数组 我不希望括号之间的字符串部分被分割 即使它们包含逗号 例如 bibendum morbi non quam nec dui luctus rutrum nulla 应该变成 bibe
  • 使用javascript循环表并读取td内的值

    我有以下内容HTML我试图循环的表td s table thead tr th Product th th class currency Base Value th th class currency Unit Price th th cl
  • 这是 PostgreSQL SQL 引擎的错误吗?如何避免(解决方法)它?

    我正在解析文本文档并将它们插入到 PostgreSQL 数据库中 我的代码是用 Java 编写的 并且使用 JDBC 进行数据库连接 在将数据添加到数据库时 我遇到了非常奇怪的错误 似乎在不可预测的时刻 主循环的迭代次数不同 Postgre
  • Linux shell 脚本向文件名添加前导零

    我有一个包含大约 1 700 个文件的文件夹 他们的名字都像1 txt or 1497 txt等等 我想重命名所有文件 以便所有文件名都是四位数字长 I e 23 txt变成0023 txt 可以执行此操作的 shell 脚本是什么 或相关
  • doGet 方法在 tomcat 7 中运行的 servlet 中被调用两次,并使用 IntelliJ Idea 12 创建

    我创建了一个简单的 servlet 在 doGet 主体中只有一个 System out println 方法 但是当我使用 IntelliJ Idea 12 在 Tomcat 7 中运行它时 我收到一条消息 System out prin
  • 没有重复项或有序集的列表

    是否有一个库提供了一种数据结构 可以保留项目的顺序并且不包含任何重复项 这种数据结构是否存在合适的名称 我希望它的行为就像一个列表nub每次操作后应用 当然 我不希望它实施得那么无效 这是一种解决方案 Use a 手指树 http hack
  • ipywidgets.Textarea 中的等宽字体?

    我怎样才能让我的小部件使用等宽字体 from ipywidgets import Textarea Textarea The world is bigger than you 我想显示一些表格样式的数据 这也有效 from IPython
  • 如何在tkinter中绑定退格键删除多个字符?

    我想要创建绑定 让我可以根据变量按 Tab 键插入预定义数量的空格 然后按 Backspace 删除那么多空格 当用户按下退格键时 如何删除预定数量的空格 我不知道如何删除多个字符 当我尝试解决此问题时 绑定删除了错误数量的字符 这个问题有
  • 如何检测iOS应用程序是否正在UI测试模式下运行

    我希望我的应用程序在 UI 测试模式下运行时运行特殊代码 例如重置其状态 我查看了应用程序从 UI 测试运行时设置的环境变量 并且没有任何明显的参数来区分正常运行的应用程序与 UI 测试中运行的应用程序 有办法找出来吗 我不满意的两个解决方
  • 查找列表中子列表的起始和结束索引

    我有一个清单 greeting hello my name is bob how are you 我想定义一个函数来查找此列表中子列表的第一个和最后一个索引 因此 find sub list my name is greeting 应该返回
  • Primefaces 5:验证码不适用于“javax.servlet.ServletException:表达式不能为空”

    我使用以下代码创建了一个简单的 xhtml 页面 如 Primefaces 展示 div My test div
  • 绑定到 NSDictionary 的“allValues”数组

    我对绑定有什么误解吗 我将 NSArrayController 的内容 绑定到 NSDictionary 的 allValues 数组 它认为它是空的 我绑定到一个随机对象 其属性已设置为同一个 NSDictionary 的 allValu
  • 在 XMPP 中以后台模式工作

    我正在研究 XMPP 我想在后台模式下收到通知 我也实现了这个东西 void xmppStream XMPPStream sender socketWillConnect GCDAsyncSocket socket Tell the soc
  • 使用正确的环境文件将角度应用程序部署到 Heroku

    我正在使用 Angular CLI 开发 Angular4 应用程序 我有环境文件 environments prod ts 和environments dev ts 我想在 Heroku 上创建两个不同的应用程序 每个应用程序使用不同的环