在我的项目中,我有3个环境文件(dev、staging、production).我想 for each dist文件夹更改它们(当部署到dev时,我需要envi-dev链接从中获取数据.对于staging和prod也是如此)

export const environment = {
  production: true,
  hmr: false,
  backend: false,
  staging: false,
  apiKey: 'prodKey',
  API_URL: "my backend link"
};

当然,在dev和staging env中生产是错误的..

"configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "namedChunks": false,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "budgets": [
                {
                  "type": "initial",
                  "maximumWarning": "2mb",
                  "maximumError": "5mb"
                },
                {
                  "type": "anyComponentStyle",
                  "maximumWarning": "6kb",
                  "maximumError": "10kb"
                }
              ],
              "outputPath": "dist/production"
            },

但是当我构建时,我通常会输入一个文件,并使用另一个文件来构建和部署,就像我的api文件中一样

import { environment } from 'src/environments/environment';

// import { environment } from "src//environments/environment.stage";
// import { environment } from "src//environments/environment.prod";

const API_URL = environment.API_URL;

命令是:ng build和ng build--配置=暂存和ng build--prod

但是我不想继续 comments API envir.如上所述,我希望在 for each 环境构建和更改dist文件后,它会自动更改,这样我就可以正常部署到git并执行正常的管道.

知道吗?谢谢

推荐答案

将所有导入保留为

import { environment } from 'src/environments/environment';

将配置对象扩展到angular.json

扩展配置对象:

... // angular.json
configurations": {
    "production" {...} // leave as it is,
    "dev": {
        "fileReplacements": [
            {
                "replace": "src/environments/environment.ts",
                "with": "src/environments/environment.dev.ts"
            }
        ]
    },
    "staging": {
        "fileReplacements": [
            {
                "replace": "src/environments/environment.ts",
                "with": "src/environments/environment.staging.ts"
            }
        ]
    }
}

Angular相关问答推荐

如何在Angular 17中使用Angular—calendum?

有没有一种方法用timeout()操作符创建计数器,用于超时一个观察对象?

未触发HTTP拦截器

Rxjs重置执行后的可观察延迟并重新调度Angular

ANGLING HTTP.GET()返回包含数据的数组

如何将角17中的嵌套组件与独立组件一起使用?

如果Rxjs间隔请求仍在进行,则不应重置,但如果用户更改输入,则应重置

如何修复不允许的HttpErrorResponse 405?

如何正确导出/导入枚举和接口文件以便 Jest 成功完成测试?

NX如何在前端和后端使用一个接口库

将数组传递给 URLSearchParams,同时使用 http 调用获取请求

RxJS - .withLatestFrom 的多个来源

模块AppModule导入的意外指令LoginComponent,请添加@NgModule 注释

如何在 Angular 2 中获取与 ElementRef 关联的组件的引用

由router-outlet 创建时如何将css类应用于组件元素?

Angular 2 - 组件内的 formControlName

如何在悬停时向元素添加类?

如何每隔一段时间发出 HTTP 请求?

如何在 Angular 2 中动态添加和删除表单字段

在不清除数据的情况下将表单设置为 Pristine