#angular #typescript #angular-cli
#angular #typescript #angular-cli
Вопрос:
У меня есть robots'txt
файл, который я хочу включить только для своих сборок разработчиков.
Как я могу настроить angular.json так, чтобы он ng build --prod
не включал robots.txt и ng build
делает?
В идеале я хотел бы расширить из configuration prod и добавить robots.txt кроме того, вот так:
// ...
{
"dev": {
"assets": [
"extend_here",
"src/robots.txt"
]
}
}
Спасибо
Ответ №1:
Попробуйте использовать Angular environments
. По умолчанию приложение Angular может быть встроено в development
среду или в production
environment.
Когда приложение создается для производственного режима,
environments/environment.ts
файл заменяется наenvironments/environment.prod.ts
file. Следовательно, если вы ссылаетесь на настройки изenvironment.ts
файла в своем коде, вам не нужно указывать.
Вы можете создать конфигурацию для своего robots.txt
с другими значениями, подобными этому:
environment.ts
export const environment = {
production: false,
robotLink: 'src/robots.txt',
};
environment.prod.ts
export const environment = {
production: true,
robotLink: '',
};
и в любом Component
or Service
, который хочет его использовать, проверьте файл из environment
и, если он существует, используйте его:
Service.ts
import { environment } from '../environments/environment';
@Injectable()
export class DataService {
robotUrl = environment.robotLink;
constructor() { }
getData() {
if (robotUrl) {
// put your code here
}
}
}
Для получения дополнительной информации о environments
перейдите по этой ссылке.
Кроме того, внутри вашего angular.json
файла есть объект конфигурации projects.{project-name}.architect.build.configuration. Установите для ресурсов внутри записи prod значение [].
Комментарии:
1. Ах да, подход среды может сработать (хотя и не совсем то, что я хочу …) Установка для записи prod значения
[]
недопустима, поскольку это останавливает добавление каких-либо ресурсов. angular.json довольно разочаровывает, когда дело доходит до гибкости…