有没有办法根据构建环境(dev、stage、prod)加载特定于环境的资源?我的.angular-cli.json中的资源配置如下:
"assets": [
"assets",
"favicon.ico",
"web.config",
"188e5a3d.png",
"robots.txt"
],
有没有办法根据构建环境(dev、stage、prod)加载特定于环境的资源?我的.angular-cli.json中的资源配置如下:
"assets": [
"assets",
"favicon.ico",
"web.config",
"188e5a3d.png",
"robots.txt"
],
创建一个名为robots
的文件夹,并在其中创建3个子文件夹,分别命名为development
、staging
和production
(或者你想要的其他环境名称)。然后,在每个子文件夹中创建特定环境的robots.txt
文件。
在angular.json
文件中,为每个环境单独指定assets
:
{
"architect": {
"build": {
"configurations": {
"configurations": {
"production": {
"assets": [
"src/favicon.ico",
"src/assets",
"src/manifest.webmanifest",
{
"glob": "robots.txt",
"input": "src/robots/production/",
"output": "./"
}
],
...
},
"staging": {
"assets": [
"src/favicon.ico",
"src/assets",
"src/manifest.webmanifest",
{
"glob": "robots.txt",
"input": "src/robots/staging/",
"output": "./"
}
],
...
},
"development": {
"assets": [
"src/favicon.ico",
"src/assets",
"src/manifest.webmanifest",
{
"glob": "robots.txt",
"input": "src/robots/development/",
"output": "./"
}
],
...
}
}
}
}
}
}
有几种方法可以为不同的环境实现不同的robots.txt。
您可以创建所有不同的robots.txt,例如robots.txt、robots-staging.txt和robots-prod.txt。
并且在angular.json中,您可以使用fileReplacements在构建应用程序时根据构建模式更改robots.txt的内容。
{
"$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"angular": {
"root": "",
"projectType": "application",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/app/browser",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.browser.json",
"deployUrl": "/",
"assets": [
{
"glob": "favicon.ico",
"input": "src",
"output": "/"
},
{
"glob": "robots.txt",
"input": "src",
"output": "/"
},
{
"glob": "**/*",
"input": "src/assets",
"output": "/assets"
}
],
"styles": [
"src/styles.scss",
],
"scripts": [
"src/assets/js/bootstrap-select.min.js",
]
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
},
{
"replace": "src/robots.txt",
"with": "src/robots-prod.txt"
}
],
...
}
}
},
...
}
在这种情况下,您可以使用CI/CD工具来创建或更改robots.txt。
您可以参考相关文档中的操作步骤。
希望这能对您有所帮助!
您可以将所有不同的robots.txt文件保存在assets中,并为每个环境创建多个环境文件。
例如:Prod:environment.prod.ts,environment.stage.ts
并在angular-cli.json中添加这些文件的配置。
在environment.prod.ts文件中添加生产配置robots.txt url的URL。
您可以在constants.ts中访问这些url,如roboturl:environment.robotUrl。
它将根据构建配置获取url。
robots.txt
需要放在根目录下,不需要从应用程序中链接。我认为这不是一个解决方案。 - David Poxon