如何将相同的角度构建(dist)部署到具有不同后端URL的多个环境?

Son*_*wal 5 angular angular6

最近,当我们想要使用jenkins将相同的角度构建(dist)部署到多个环境(这意味着不同的后端URL)时,我们遇到了这种情况.

  • 使用'ng build --configuration $ENV' (angular-6) with backend url mentioned in 'src/environment/environment.$ENV.ts'显然不是我们的解决方案,因为这意味着创建特定于环境的多个构建.

Son*_*wal 8

我们是这样解决的:(参考:https : //github.com/angular/angular-cli/issues/4318,特别感谢:Michaël Arnauts

  1. 在 dist/assets 文件夹中创建一个 js 文件并在那里定义一个全局 js 变量:

    分布/资产/env.js

    window._env = {
        backendUrl: 'https://localhost:XXXX/',
    };
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在你的 environment.$ENV.ts 文件中指向这个全局 js 变量:

    src/environments/environment.$ENV.ts

    export const environment = {
        production: true,
        backendUrl: (<any>window)._env.backendUrl,
    };
    
    Run Code Online (Sandbox Code Playgroud)
  3. index.html 中添加对 js 的引用

    ... <head> ... <script src="/assets/env.js"></script> </head> ...

  4. 创建环境值 js 文件:

    src/environments/environment.$ENV.values.js

    window._env = {
        backendUrl: 'https://dev.example.com:XXXX/',
    };
    
    Run Code Online (Sandbox Code Playgroud)
  5. 创建构建(dist)

  6. 最后,在部署时执行:

    cp src/environments/environment.$ENV.values.js dist/assets/env.js

  7. 完毕!

请注意,第 1 步是必需的,因此您不需要在本地执行第 6 步。