Подтвердить что ты не робот

Настроить Restangular.baseUrl с помощью Gruntjs

Я использую Restangular в проекте, построенном с использованием Gruntjs. Вот фрагмент:

// 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);
}])

Я хотел бы иметь другое значение для baseUrl, если указано в cli или по умолчанию, если не указано:

$ 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'

Как я могу это сделать?

4b9b3361

Ответ 1

Возможно с помощью препроцесса 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 */

Затем в вашем файле grunt, после установки препроцесса grunt (i.e npm install grunt-preprocess --save-dev, вы добавляете следующую конфигурацию:

 preprocess: {
        options: {
            context: {

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

очевидно, вам необходимо обновить список файлов js, в соответствии с которым вы всегда будете использовать файлы. важное - если вы планируете обновлять один и тот же файл (а не новый пункт назначения), вам нужно использовать встроенную опцию

Наконец, чтобы работать с 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');
    });

Наконец, запустите задачу baseUrl следующим образом:

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

Обратите внимание, что я помещаю резервный URL-адрес, чтобы вы также могли запускать grunt baseUrl, и grunt установит ваш baseUrl на ваш определенный.