在构建生产时更改remoteServiceBaseUrl

时间:2018-03-26 02:05:03

标签: angular angular-cli assets environment aspnetboilerplate

当想要部署到服务器时,我们需要更改 /src/assets/appconfig.json 中的remoteServiceBaseUrl

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

2 个答案:

答案 0 :(得分:2)

您可以使用特定于环境的文件,例如的 appconfig.prod.json

  
      
  • 资产/      
        
    • appconfig.json
    •   
    • appconfig.prod.json
    •   
  •   

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

但angular-cli支持Multiple Apps integration

您可以复制应用对象,修改资源配置,并在 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

答案 1 :(得分:2)

最后,我用以下更改重写了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并且效果很好。