У меня есть ситуация, когда я пытаюсь создать свое приложение 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/',
};
У меня есть следующие конфигурации в environmentmrnt.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 для конвейера сборки, который я использую для построения решения.
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'
Я пытался найти решение в Интернете, но не смог найти. Пожалуйста, помогите мне в решении проблемы. Я высоко ценю ваше время и помощь в этом. Заранее спасибо.