在为生产构建时更改 remoteServiceBaseUrl

Change remoteServiceBaseUrl when building for production

当要部署到服务器时,我们需要在/src/assets/appconfig.json.

中更改remoteServiceBaseUrl

有没有办法根据环境设置不同的remoteServiceBaseUrl/appBaseUrl

您可以使用 environment-specific 个文件,例如appconfig.prod.json

  • assets/
    • appconfig.json
    • appconfig.prod.json

无法根据环境复制不同的 assets 文件:angular/angular-cli#9634

但是angular-cli支持Multiple Apps integration

可以复制app对象,修改assets配置,在angular-cli中添加名称。json:

"apps": [
    {
        ...
        "assets": [
            {
                "glob": "**/!(appconfig.prod.json)",
                "input": "./assets/",
                "output": "./assets/"
            },
            ...
        ],
        ...
    },
    {
        "name": "prod",
        ...
        "assets": [
            {
                "glob": "**/!(appconfig.*)",
                "input": "./assets/",
                "output": "./assets/"
            },
            {
                "glob": "appconfig.prod.json",
                "input": "./assets/",
                "output": "./assets/appconfig.json"
            },
            ...
        ],
        ...
    }
],

用法:

ng build -prod -app=prod

最后,我重写了AppPreBootstrap.ts,做了以下改动:

已添加 import { environment } from 'environments/environment';

已将 getApplicationConfig() 更改为:

var version = environment.name ? '.' + environment.name : '';
return abp.ajax({
    url: '/assets/appconfig' + version + '.json',
    method: 'GET',
    headers: {
        'Abp.TenantId': abp.multiTenancy.getTenantIdCookie()
    }

在环境配置中,我有一个 "name" 参数匹配 environment.name.json 文件名。

现在我可以拥有 appconfig.production.json 并且效果很好。