Configure Restangular.baseUrl using Gruntjs Configure Restangular.baseUrl using Gruntjs angularjs angularjs

Configure Restangular.baseUrl using Gruntjs


It's possible with the aid of Grunt preprocess which is useful for replacing (and other things) templates inside files.

First add this to your .js code:

/* 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 */

Then in your grunt file, after installing grunt preprocess (i.e npm install grunt-preprocess --save-dev you add the following configuration:

 preprocess: {        options: {            context: {            }        },        js: {            src: 'public/js/services.js',            dest: 'services.js'        }    },

obviously, you need to update the js file list accordingly to which ever files you use. important notice - if you are planning on updating the same file (and not to a new destination) you need to use the inline option

At last, in order to work with a command line config variable, add the following custom task to your grunt file as well:

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');    });

Finally, run the baseUrl task like so:

grunt baseUrl --rest.baseUrl='http://some.domain.net/public/whatever'

Notice I put in a fallback url so you can also run grunt baseUrl and grunt will set your baseUrl to your defined one.