我有一种情况,我正在尝试使用生产配置构建我的 Angular 应用程序并部署到多个环境,例如ng build --configuration=production
这里的工作流程是当我使用上述命令(ng build --configuration=production)构建时, environment.ts 文件被 environment.prod.ts 替换
我在 environment.prod.ts 中的配置如下,
export const environment = {
production: true,
environment: 'Production',
_webApiHost: 'prodsomename.company.com/api/',
};
我在 environmrnt.test.ts 中的配置如下,
export const environment = {
production: true,
environment: 'Test',
_webApiHost: 'testsomename.company.com/api/',
};
我对 angular.json 文件的设置如下,
"configurations": {
"production": {
"fileReplacements": [ {
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
} ],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [ {
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
} ]
},
"test": {
"fileReplacements": [ {
"replace": "src/assets/configs/environment.ts",
"with": "src/assets/configs/environment.test.ts"
} ],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [ {
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
} ]
}
}
如果我分别为每个环境构建解决方案并部署到适当的环境,如下图所示,
它的作用就像魅力,这意味着,
testApp与 _webApiHost 通信:testsomename.company.com/api/和 prodApp 与_webApiHost通信:prodsomename.company.com/api/
在上述情况下,QA 测试的工件与部署到生产的工件不同,这不是将代码推送到生产的理想方式。
但我担心的是我只想构建应用程序并将其部署到多个环境,每个环境将与适当的 api 通信,如下图所示,
当我使用命令ng build --configuration=production构建它时, environment.ts 文件将具有生产配置,
export const environment = {
production: true,
environment: 'Production',
_webApiHost: 'prodsomename.company.com/api/',
};
因此,如果将该工件部署到测试环境,则testApp正在尝试与_webApiHost: 'prodsomename.company.com/api/ 进行通信,这是不对的。
这是我用来构建解决方案的 Azure DevOps 构建管道 powershell 脚本。
Set-Location "$(Build.Repository.LocalPath)\Buffini.Web.UI\Angular"
Write-Host 'Angular Install Starting'
npm install -g @angular/cli@8.0.6 -Verbose
Write-Host 'Angular Install Finished'
Write-Host 'NPM Install Starting'
npm install -Verbose
Write-Host 'NPM Install Finished'
Write-Host 'NPM Update Starting'
npm update -Verbose
Write-Host 'NPM Update Finished'
Write-Host 'NPM Audit Starting'
npm audit fix -Verbose
Write-Host 'NPM Audit Finished'
Write-Host 'Angular Build Starting'
ng build --configuration=production --deleteOutputPath=true
Write-Host 'Angular Build Finished'
我曾尝试在线搜索解决方案,但找不到任何解决方案。请帮助我解决问题。我将非常感谢您的时间和帮助。提前致谢。