angular - 如何将相同的角度构建(dist)部署到具有不同后端 url 的多个环境?
问题描述
最近,当我们想使用 jenkins 将相同的 Angular 构建(dist)部署到多个环境时,我们遇到了这种情况,这意味着不同的后端 url。
- 使用
'ng build --configuration $ENV' (angular-6) with backend url mentioned in 'src/environment/environment.$ENV.ts'
显然不是我们的解决方案,因为这意味着创建多个特定于环境的构建。
解决方案
这就是我们解决它的方法:(参考:https ://github.com/angular/angular-cli/issues/4318 ,特别感谢:Michaël Arnauts)
在 dist/assets 文件夹中创建一个 js 文件并在那里定义一个全局 js 变量:
dist/assets/env.js
window._env = { backendUrl: 'https://localhost:XXXX/', };
指向环境中的这个全局 js 变量。$ENV.ts 文件:
src/environments/environment.$ENV.ts
export const environment = { production: true, backendUrl: (<any>window)._env.backendUrl, };
在index.html中添加 js 的引用
... <head> ... <script src="/assets/env.js"></script> </head> ...
创建环境值 js 文件:
src/environments/environment.$ENV.values.js
window._env = { backendUrl: 'https://dev.example.com:XXXX/', };
创建构建(dist)
最后,在部署时执行:
cp src/environments/environment.$ENV.values.js dist/assets/env.js
完毕!
请注意,第 1 步是必需的,因此您不需要在本地执行第 6 步。
推荐阅读
- bioinformatics - Liftover 狗 canFam3 到人类 hg19
- go-cd - 远程 go-agent 未连接到 go-server
- javascript - 提交没有隐藏 HTML 元素数组值的表单
- php - 有没有办法从文件上传下拉列表中的所有文件中更改默认设置?
- swift - 有没有办法以编程方式操作快捷方式标题
- javascript - Hide/show table rows with certain class with checkbox
- php - 在我尝试创建的 MVC PHP 应用程序中不断遇到 403
- c++ - strcmp/char* 转换未按预期工作
- c++ - 如何在 C++ 中获得随机函数的周期性
- windows - Windows Multipoint 占用端口 80