В разделе Настройка конфигурации Руководства по настройке углового рабочего пространства обсуждается, как можно управлять различными конфигурациями в одном приложении.
В моем случае я решил создать конфигурацию для каждого клиента:
// angular.json excerpt
"architect": {
"build": {
"configurations": {
"customer-1": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.customer-1.ts"
}
]
},
"customer-2": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.customer-2.ts"
}
]
},
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"configurations": {
"customer-1": {
"browserTarget": "my-app:build:customer-1"
},
"customer-2": {
"browserTarget": "my-app:build:customer-2"
},
}
Я использую файлы среды для управления различными пользовательскими настройками и флагом production
:
// environment.customer-1.ts excerpt
const environment = {
production: true,
customer: "Customer 1",
};
// environment.customer-2.ts excerpt
const environment = {
production: true,
customer: "Customer 2",
};
Наконец, мне нужен способ определить, было ли приложениеначал использовать команду ng serve
или ng build
, чтобы импортировать некоторые фиктивные провайдеры в модуль приложения.
Я пытался использовать флаг environment.production
, но, очевидно, это всегда будет так:
import { environment } from '../environments/environment';
@NgModule({
providers: [
environment.production // is always true since I've set the flag in all customer-specific environment.ts files
? []
: nonProductionProviders,
],
bootstrap: [AppComponent]
})
export class AppModule { }
Единственный способ поддержать этот сценарий - создать отдельные environment.ts
файлы, а также соответствующие конфиги, например,
/src/environment.customer-1-dev.ts
/src/environment.customer-1-prod.ts
// angular.json excerpt
"architect": {
"build": {
"configurations": {
"customer-1-dev": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.customer-1-dev.ts"
}
]
},
// etc.
Есть ли лучший способ сделать это?Передача дополнительного флага или, по крайней мере, возможность расширять конфигурации, было бы неплохо.