Комплексное руководство по настройке «base href» в команде Angular ng build

В Angular атрибут «base href» используется для указания базового URL-адреса для разрешения относительных URL-адресов. При сборке приложения Angular с помощью команды «ng build» важно настроить «base href», чтобы гарантировать правильное разрешение ресурсов и маршрутов приложения. В этой статье мы рассмотрим различные методы установки «базового href» и предоставим примеры кода для каждого подхода.

Метод 1: встроенная базовая ссылка Href в index.html

Самый простой способ установить «базовый href» — напрямую изменить файл index.html. Найдите раздел

в файле и добавьте следующую строку:

<base href="/">

Это устанавливает «базовый href» в корень приложения. Отрегулируйте путь “/”, если ваше приложение размещено в подкаталоге.

Метод 2: использование параметра «baseHref» в angular.json

Angular предоставляет файл конфигурации angular.json, в котором вы можете указать параметр «baseHref». Откройте angular.json и найдите раздел «архитектор» для цели «сборка». Добавьте следующую конфигурацию:

"options": {
  "baseHref": "/"
}

Этот метод позволяет вам установить «базовый href» глобально для всех конфигураций сборки.

Метод 3: программная установка «baseHref»

Если вам нужно динамически установить «базовый href» в зависимости от среды или других факторов, вы можете сделать это программно в своем приложении Angular. В файле app.module.ts импортируйте токен APP_BASE_HREF из @angular/common и укажите для него собственное значение:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, APP_INITIALIZER, InjectionToken } from '@angular/core';
import { APP_BASE_HREF } from '@angular/common';
export function getBaseHref(): string {
  // Code to determine the base href dynamically
  return '/';
}
@NgModule({
  imports: [BrowserModule],
  providers: [
    {
      provide: APP_INITIALIZER,
      useFactory: getBaseHref,
      deps: [],
      multi: true
    },
    {
      provide: APP_BASE_HREF,
      useFactory: getBaseHref
    }
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

В приведенном выше примере функцию getBaseHrefможно настроить для динамического определения базового href в зависимости от ваших конкретных требований.

Метод 4. Использование переменных среды

Другой подход — использовать переменные среды для установки «базового href» во время процесса сборки. Создайте новый файл среды (например, Environment.prod.ts) и определите свойство «baseHref»:

export const environment = {
  production: true,
  baseHref: '/'
};

Затем измените файл angular.json, чтобы использовать переменную среды:

"configurations": {
  "production": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.prod.ts"
      }
    ],
    "baseHref": "${environment.baseHref}"
  }
}

Этот метод позволяет вам установить «базовый href» по-разному для каждой среды (например, разработки, производства).