Javascript 是否有一种方法可以使用不同的环境配置文件进行基于Ionic Framework的Cordova应用程序的开发和生产设置

Javascript 是否有一种方法可以使用不同的环境配置文件进行基于Ionic Framework的Cordova应用程序的开发和生产设置,javascript,cordova,gruntjs,ionic-framework,hybrid-mobile-app,Javascript,Cordova,Gruntjs,Ionic Framework,Hybrid Mobile App,比如说,我们在Spring框架中有很多变体来设置编译/运行/测试时环境,并使用它绑定不同的属性文件和设置。 这是为了让我们不改变任何东西,除了这一个环境/配置文件变量,以便能够有适当的应用程序设置 更具体地说: 我有两个文件:settings.dev.js和settings.prod.js settings.prod.js: var API_PATH = "http://example.com/api" var OTHER_INPORTANT_SETTINGS = {....} var API

比如说,我们在Spring框架中有很多变体来设置编译/运行/测试时环境,并使用它绑定不同的属性文件和设置。 这是为了让我们不改变任何东西,除了这一个环境/配置文件变量,以便能够有适当的应用程序设置

更具体地说:

我有两个文件:settings.dev.js和settings.prod.js

settings.prod.js:

var API_PATH = "http://example.com/api"
var OTHER_INPORTANT_SETTINGS = {....}
var API_PATH = "http://localhost.com/api"
var OTHER_INPORTANT_SETTINGS = {....}
settings.dev.js:

var API_PATH = "http://example.com/api"
var OTHER_INPORTANT_SETTINGS = {....}
var API_PATH = "http://localhost.com/api"
var OTHER_INPORTANT_SETTINGS = {....}
以及一个Ionic Framework应用程序,其中服务使用此设置。例如

me: $resource(API_PATH + '/my/profile', {}, {...}
等等,在许多服务和控制器中,也许还有指令中

有什么方法可以使用吗

  • settings.dev.js在开发和
  • 用于部署发布应用程序的settings.prod.js

要加载配置文件,只需在HTML中添加带有脚本URL的脚本标记即可

<script src="/your/path/settings.prod.js"></script>



然后您可以像往常一样定义变量。

作为您可以使用的方法之一

在html中:

<!-- build:remove:dev -->
<script src="/your/path/settings.prod.js"></script>
<!-- /build -->

<!-- build:remove:prod -->
<script src="/your/path/settings.dev.js"></script>
<!-- /build -->

希望它能帮助别人。

我只是为这个问题制定了一个解决方案

  • 创建一个grunt任务(或等效的构建工具),将
    settings..js
    文件复制到
    settings.js
    文件

    copy: {
      dev: {
        src: 'settings.dev.js',
        dest: 'settings.js'
      },
      prod: {
        src: 'settings.prod.js',
        dest: 'settings.js'
      }
    },
    
    grunt.registerTask('dev', [
      'copy:development'
    ]);
    
    
    grunt.registerTask('prod', [
      'copy:prod'
    ]);
    
  • 在html或js文件中包含
    settings.js

  • settings.js
    添加到您的
    .gitignore
    文件中,这样您的环境特定文件就不会影响其他文件


  • 我使用了这个软件包,效果非常好:


    只要你有一个在minify/browserify/etc之前运行的任务,你就可以将它包含到你的单个编译JS文件中。

    我实际上是这样加载配置文件的。但我希望能够根据配置文件加载不同的文件,比如dev for dev、prod for production。根据我在做什么、开发什么或生产什么,它如何帮助我加载不同的脚本?实际上,您可以运行脚本,在部署之前将文件名重写为“prod”,在部署之后将文件名重写回“dev”。谢谢。我能在什么地方找到这个例子吗?有了春天,就容易多了。我认为cordova或ionic也可以使用一些简单的工具。Grunt只接受两种环境(dev和prod)。我可以使用像“local”、“qa”、“stage”这样的新环境吗?可以,因为这里的环境名称就是任务名称。我在这里用来过滤脚本标记的模块只接受冒号后面的目标名称,即您编写的任何内容。我在这里使用的方法非常过时,也不太酷。我建议看一看一些模块绑定器,比如如果你愿意坚持使用grunt,那么@edmond chui的复制方法比IMHO好得多。
    copy: {
      dev: {
        src: 'settings.dev.js',
        dest: 'settings.js'
      },
      prod: {
        src: 'settings.prod.js',
        dest: 'settings.js'
      }
    },
    
    grunt.registerTask('dev', [
      'copy:development'
    ]);
    
    
    grunt.registerTask('prod', [
      'copy:prod'
    ]);