如何在AngularJS和Typescript中实现特定于环境的配置设置

时间:2017-11-30 20:24:08

标签: angularjs typescript visual-studio-2017 angularjs-1.6 typescript2.4

我正在整理一个AngularJS + Typescript + VisualStudio项目。我希望有一个配置文件,其中包含控制不同设置的常量(例如,REST API URL和环境名称)。这通常是如何在这种项目中完成的?

我可能有一个名为app.dev.config.ts的开发配置文件,如下所示:

module app.config {
    export class ConfigSettings {
        static environment(): string { return "dev"; }
        static dataApiBaseUrl(): string { return "DevDataService"; }
    }
}

app.prod.config.ts这样:

module app.config {
    export class ConfigSettings {
        static environment(): string { return "prd"; }
        static dataApiBaseUrl(): string { return "PrdDataService"; }
    }
}

当然这实际上并不起作用,因为这两个类具有相同的名称。

我需要以某种方式设置它,以便我在构建服务器中只构建一次,然后可以将其部署到固定的(3)环境中。也许这意味着当我将其部署到某个环境时,我还有一个额外的步骤,我重命名配置文件。这就是我为C#项目及其配置文件所做的工作。

我在网上搜索过这个,但我能找到的只是对tsconfig.json个文件的引用。

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。

1)我在项目中将env.dev.tsenv.prd.ts等单独的配置文件放在一起。他们的内容如下:

angular.module('compdb') //module name matches my main module
    .constant('env', 'prd')
    .constant('key1', 'prd value 1')
    .constant('key2', 'prd value 2');

2)Visual Studio将这些转换为env.dev.js

3)在我的gulp文件中,我将env.*.js文件复制到我的输出目录。

4)在我的Index.cshtml文件中,我添加了env.js。我在创建compdb角度模块

的脚本之后添加了这个

5)当我将代码部署到任何环境时,我将相应的配置文件(例如env.prd.js)重命名为env.js