Когда приложение Angular разрабатывается локально, фоновый стиль CSS имеет значение /assets/banner.png
, как показано здесь:
.classname {
background-image: url(/assets/banner.png);
}
Когда приложение развернуто, правильный путь в среде сервера:
background-image: url(/server/assets/banner.png);
Как мне указать Angular добавлять к путям изображений /server
?
Прямо сейчас я делаю несколько операторов sed
для файла index.html
, и это работает. Подумал, что, возможно, есть лучший способ, чем просто sed
все переделать.
🤔 А знаете ли вы, что...
Angular поддерживает разработку мобильных приложений с использованием фреймворка NativeScript.
Я знаю, что это может показаться излишним, но это может быть полезно для других целей, например для настройки среды, которую вы планируете использовать. Проделав это несколько раз, я создал простой скрипт, который поможет вам в этом. Я также предполагаю, что вы также хотите динамически генерировать окружения.
Этот скрипт может генерировать необходимые окружения, и вы можете запустить его в процессе сборки.
Ниже приведены шаги для достижения этой цели.
generate-environment.js
, скрипт
const { writeFile } = require('fs');
require('dotenv').config();
const isProduction = process.env['DEPLOYMENT_ENV'] === 'prod';
const assetBaseUrl = isProduction ? '/server' : '';
const environmentFileContent = `
export const environment = {
production: ${isProduction},
assetBaseUrl: "${assetBaseUrl}"
};
`;
writeFile('./src/environments/environment.ts', environmentFileContent, function (err) {
if (err) {
console.info(err);
} else {
console.info('Environment file created successfully.');
}
});
import { Component, OnInit } from '@angular/core';
import { environment } from '../environments/environment';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
backgroundImageUrl: string;
ngOnInit() {
this.backgroundImageUrl = `${environment.assetBaseUrl}/assets/banner.png`;
}
}
<div [ngStyle] = "{'background-image': 'url(' + backgroundImageUrl + ')'}">
<!-- Your content here -->
</div>
package.json
файл."scripts": {
"prebuild": "node generate-environment.js",
"build": "ng build"
}
Выполняя эти шаги, вы гарантируете, что конфигурация среды динамически генерируется и правильно используется в вашем приложении Angular в процессе сборки.