将相同的角度构建部署到多个环境

时间:2020-08-26 15:26:10

标签: angular

我的目标是在多个环境(dev,qa,prod)中使用相同的角度构建。 在我的代码中,我正在访问一些rest api。正如您已经了解的那样,URL的主机名在环境之间是不同的。

我在线上看到了多个解决方案,并且对以下文章中描述的一种特定解决方案有疑问:Host configurations as assets — mount configuration files per environment

import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {Observable} from 'rxjs';
import {shareReplay} from 'rxjs/operators';

interface Configuration {
  resourceServerA: string;
  resourceServerB: string;
  stage: string;
}

@Injectable({providedIn: 'root'})
export class ConfigAssetLoaderService {

  private readonly CONFIG_URL = 'assets/config/config.json';
  private configuration$: Observable<Configuration>;

  constructor(private http: HttpClient) {
  }

  public loadConfigurations(): any {
    if (!this.configuration$) {
      this.configuration$ = this.http.get<Configuration>(this.CONFIG_URL).pipe(
        shareReplay(1)
      );
    }
    return this.configuration$;
  }

}

让我们假设我使用了此解决方案,并且有一个专用服务可以从文件系统中加载config.json文件。我将应用程序的docker映像部署到docker容器(使用nginx)。应用启动时,我从文件系统加载文件,对吗?好吧,这是我所缺少的部分。我的应用程序是前端应用程序,因此在客户浏览器上运行的服务是否会尝试从客户端加载配置文件?

0 个答案:

没有答案