Javascript 是否有一种方法可以使用不同的环境配置文件进行基于Ionic Framework的Cordova应用程序的开发和生产设置
比如说,我们在Spring框架中有很多变体来设置编译/运行/测试时环境,并使用它绑定不同的属性文件和设置。 这是为了让我们不改变任何东西,除了这一个环境/配置文件变量,以便能够有适当的应用程序设置 更具体地说: 我有两个文件:settings.dev.js和settings.prod.js settings.prod.js: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
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
<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 -->
希望它能帮助别人。我只是为这个问题制定了一个解决方案
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'
]);
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'
]);