Angular environment variables
Переменные окружения Angular
Находятся в файлах папки src\environments\*.environment.ts. Angular CLI при создании приложения создает 2 файла:
- environment.ts - используется по-умолчанию
- environment.prod.ts
environment.ts файл может быть заменён во время сборки проекта с помощью массива fileReplacements. Команда ng build --prod заменяетenvironment.ts на environment.prod.ts. Список замен файлов можно найти в файле angular.json.
Пример
src\environments\environment.ts
export const environment = {
production: false,
apiUrl: 'http://example.com/api/',
};src\environments\environment.prod.ts
export const environment = {
production: true,
apiUrl: 'http://prod.com/api/'
};Использование в компоненте src\app\app.component.ts
import { Component, OnInit } from '@angular/core';
import { environment } from 'src/environments/environment'; <====
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent implements OnInit {
url = environment.apiUrl; <====
title = 'Env';
ngOnInit() {
console.log(this.url);
}
}При сборках ng build и ng build --prod в консоль будет попадать http://example.com/api/ и http://prod.com/api/ соответственно.
Конфигурации
Конфигурации позволяют создавать дополнительные окружения.
Если вы посмотрите на свой angular.json файл, вы увидите, что имеются настройками для каждой конфигурации в секции projects > <имя_проекта> > architect > build > configurations (optimization, sourceMap, aot, ...)
Содержимое angular.json
...
"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"
}
]
}
...Создание конфигурации vasya
Добавьте новый файл src/environments/environment.vasya.ts
export const environment = {
production: true,
apiUrl: 'http://vasya.ru/'
};Создайте конфигурцию в build секции projects > <имя_проекта> > architect > build > configurations:
...
"vasya": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.vasya.ts"
}
]
}
...Теперь можно собирать проект с конфигурацией vasya. В свойство apiUrl будет попадать значение http://vasya.ru/.
ng build --configuration=vasya
ng build -c vasyaЕсли необходимо использовать конфигурацию в ng serve, то следует в секцию projects > <имя_проекта> > architect > serve > configurations добавить конфиг с browserTarget.
...
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "<project_name>:build"
},
"configurations": {
"production": {
"browserTarget": "<project_name>:build:production"
},
"vasya": { <=====
"browserTarget": "<project_name>:build:vasya" <=====
}
}
},
...После проделанных манипуляция доступны команды:
ng serve --configuration=vasya
ng serve -c vasya