Tai*_*air 13 angularjs gruntjs restangular
我在使用Gruntjs构建的项目中使用Restangular.这是一个片段:
// scripts/app.js
angular.module('myApp', ['restangular'])])
.config(['RestangularProvider', function(RestangularProvider) {
/* this is different on dev, test, prod environments */
var baseUrl = 'http://localhost:8080/sms-api/rest/management/';
RestangularProvider.setBaseUrl(baseUrl);
}])
Run Code Online (Sandbox Code Playgroud)
我想为baseUrlcli指定一个不同的值,如果没有指定则为默认值:
$ grunt server
Using default value for 'baseUrl'
$ grunt build --rest.baseUrl='http://my.domain.com/rest/management/'
Using 'http://my.domain.com/rest/management/' for 'baseUrl'
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
借助Grunt预处理可以替换(和其他东西)文件内的模板.
首先将其添加到.js代码中:
/* Begin insertion of baseUrl by GruntJs */
/* @ifdef baseUrl
var baseUrl = /* @echo baseUrl */ // @echo ";"
// @endif */
/* @ifndef baseUrl
var baseUrl = 'http://www.fallback.url';
// @endif */
/* End of baseUrl insertion */
Run Code Online (Sandbox Code Playgroud)
然后在你的grunt文件中,安装grunt preprocess之后(即npm install grunt-preprocess --save-dev添加以下配置:
preprocess: {
options: {
context: {
}
},
js: {
src: 'public/js/services.js',
dest: 'services.js'
}
},
Run Code Online (Sandbox Code Playgroud)
显然,您需要根据您使用的文件更新js文件列表.重要通知 - 如果您计划更新同一文件(而不是新目的地),则需要使用内联选项
最后,为了使用a command line config variable,还要将以下自定义任务添加到您的grunt文件中:
grunt.registerTask('baseUrl', function () {
var target = grunt.option('rest.baseUrl') || undefined;
grunt.log.ok('baseUrl is set to', target);
grunt.config('preprocess.options.context.baseUrl', target);
grunt.task.run('preprocess');
});
Run Code Online (Sandbox Code Playgroud)
最后,运行baseUrl任务,如下所示:
grunt baseUrl --rest.baseUrl='http://some.domain.net/public/whatever'
Run Code Online (Sandbox Code Playgroud)
请注意,我放入了一个后备网址,因此您也可以运行grunt baseUrl并且grunt会将您的baseUrl设置为您定义的URL .
| 归档时间: |
|
| 查看次数: |
2424 次 |
| 最近记录: |