在 angular 中编写 angular 个配置

Compose angular configurations in angular

在我的 angular 应用程序中,我需要提供一些位于 src/cms 的静态内容(仅当在本地开发时;在生产站点上,此内容将由后端提供)。为此我做了 (angular.json):

{
  ...
  "projects": {
    "myproject": {
      "projectType": "application",
      ...
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "configurations": {
            ...
            "with-content": {
              "assets": [
                "src/favicon.ico",
                "src/assets",
                "src/cms"
              ]
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "myproject:build:with-content"
          },
          ...
        },
        ...
      }
    }
  },
  ...
}

所以 ng serve 现在很乐意提供 src/cms 的所有内容(在 cms 路径下),我对此很好。

现在我需要给它添加i18n(pt语言)。这意味着将 angular.json 更改为添加:

{
  ...
  "projects": {
    "myproject": {
      "projectType": "application",
      ...
      "i18n": {
        "locales": {
          "pt": "src/locale/messages.pt.xlf"
        }
      },
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            ...
            "localize": true,
            ...
          },
          "configurations": {
            ...
            "pt": {
              "localize": ["pt"]
            },
            "with-content": {
              ...
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "myproject:build:with-content"
          },
          "configurations": {
            "pt": {
              "browserTarget": "myproject:build:pt"
            },
            "production": {
              "browserTarget": "myproject:build:production"
            }
          }
        },
        ...
      }
    }
  },
  ...
}

为了开发 pt 语言环境,我只是 运行 ng serve --configuration=pt 但是我无法访问 cms.

下的静态文件

当运行在本地与ng serve连接时,是否可以组合with-contentpt两种配置?

或者,或者,将 cms 路径添加到项目,但将其排除在生产构建之外?

您的 CMS 配置在 "with-content" 配置中,您只提供 pt 配置。有两种解决方法

  1. 组合配置(这可能是您正在寻找的配置):

    在命令行中:--configuration=conf1,conf2

  2. 另一种方法是在构建选项中使用 cms 而不是配置

  3. 结合您想要的配置进行新配置并在其上提供服务

我找不到使用配置组合(又名组合配置)的方法。

但我可以通过更改默认和生产选项使其工作

默认构建选项包括src/cms(我们只希望在本地开发中使用的资产):

{
  "projects": {
    "myproject": {
      "projectType": "application",
      ...
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            ...
            "assets": [
              "src/favicon.ico",
              "src/assets",
              "src/cms"
            ],
            ...

生产选项重新定义资产:

          },
          "configurations": {
            "production": {
              ...
              "assets": [
                "src/favicon.ico",
                "src/assets"
              ]
            }
          }
        },

本地开发 (ng serve) 的默认选项使用默认构建选项:

        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "myproject:build"
          },

用于本地开发的新配置“pt”,使用“pt”构建配置(基本上声明本地化为葡萄牙语):

          "configurations": {
            "pt": {
              "browserTarget": "myproject:build:pt"
            },
          }
        },
        ...
      }
    }
  },
  ...
}