如何使用Angular-CLI 4构建一次并部署多个环境



我们计划将Angular部署到Amazon S3静态网站中,目前我们正在为每个环境(开发/生产)进行单独的构建。是构建一次并部署到所有环境的任何解决方案。

预先感谢。

,因为我理解您是否想拥有一个构建(例如,一个连续的集成构建)(例如,开发,开发,测试,生产等)。如果每个堆栈的环境文件中有不同的设置,则将具有不同的构建。您只有一个选择只有一个构建。

在开发环境文件中,您需要在本地开发的开发设置。在您的生产环境中,文件使用占位符的设置,这些设置与您的开发设置不同。

然后,您始终可以构建生产申请,并将您的申请与占位符的占位符。

对于部署,您必须操纵主。*。bundle.js文件(有占位符):

  1. preeploy:运行一个操纵主的脚本。生产设置。
  2. 部署:将应用程序部署到您的应用服务
  3. deploy:运行一个操纵主的脚本。

是的,这不是一个不错的解决方案,但是经过3天的研究,这是最好的选择。然后,您可以通过运行脚本部署多个堆栈的应用程序。

我在Visuals Studio Team Services上使用PowerShell脚本进行了此操作,以利用那里的发行功能将应用程序部署到Microsoft Azure。

刚刚完成了此问题的解决方案,用于在工作中的许多部门应用中使用。

基本思想(受" 12个因素应用程序"文档的"配置"部分的启发,是将配置存储在服务器上,与应用程序本身分开。

当您将应用程序部署到服务器时,它会从服务器中获取其配置,而不是将其捆绑到应用程序中。

这完全消除了需要重建针对不同环境/部署方案的应用程序。

这样做需要更改Angular应用程序消耗配置的方式。

使用将配置放在应用程序环境中的通常方法。TS文件,配置始终在运行时可用,并且可以在需要时注入。

使用服务器端配置,Angular应用程序需要进行HTTP调用以获取配置,因此无法立即使用。

我的方法是创建一个通过HTTP调用加载配置的ConfigurationsEvice。此服务通过RXJS asyncsubject发布配置。我将此服务注入需要配置的所有类。

asyncSubject仅在调用了oncomplete方法后才发出值,因此配置的消费者可以通过asyncsubject flatmap flatmap,然后使用结果配置来例如获取API调用的URL。

剩下的问题是如何初始化configurationservice ...假设所有api url都在配置中,configurationservice如何知道要使用什么URL来获得配置?

我对此的解决方案是安排与Angular Application index.html相同的基本URL可用配置文件(例如,如果index.html位于https://example.com/someapem/someape-/index上。html,然后配置文件位于https://example.com/someapp/config/ui-config.json)

这允许ConfigurationService相对引用配置URL。在上一个示例中,它将使用URL" config/ui-config.json"或" ./config/ui-config.json"。

用于不用后端服务的测试,我将配置文件存储在应用程序/资产/配置中,然后设置Angular的代理,以拦截从资产/配置文件夹返回的配置请求。

对于非DEV部署(QA,生产等),您需要安排与Angular App的index.html相同的位置提供配置文件。

如果您将角度应用程序与后端分开部署,这意味着简单地将配置文件放入与index.html文件的同一文件夹中。

用于与我的前端和后端捆绑在一起,就像我的基于Java的Springboot应用程序一样在预期的网址。

对于Springboot应用程序,我使用webmvcconfigureradapter来实现此操作,该WebMvcconFigurerAdapter添加了一个资源手用来制作"配置"目录(无论您选择在哪里存储它),并且它是可用的内容,就像它是"静态"文件一样,就像一个"静态"文件Angular应用程序的索引.html

配置外部化可以使用必须在根级别上创建的Env.js文件来完成。请关注link-https://www.jvandemo.com/how-to-use-environment-variobles-to-configure-your-angular-angular-angular-application-without-a-a-rebuild/

在连续交付系统中用于角度处理环境的配置库。查看我创建的NPM软件包处理此问题https://www.npmjs.com/package/@golavr/ng-config

最新更新