2013-08-24 21 views
13

Gruntjs kullanılarak oluşturulan bir projede Restangular kullanıyorum. İşte pasajıdır:Gruntjs kullanarak Restangular.baseUrl yapılandırın

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

Ben belirtilmediği sürece cli veya varsayılan olarak belirtilmişse baseUrl için farklı bir değere sahip istiyorum:

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

Bunu nasıl yapabilirim

?

cevap

6

Grunt preprocess yardımı ile dosyaların içindeki (ve diğer şeyler) şablonların değiştirilmesi için kullanışlıdır. Açıkçası

preprocess: { 
     options: { 
      context: { 

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

: Aşağıdaki yapılandırma eklemek npm install grunt-preprocess --save-dev yani (hırıltı ön işlem yükledikten sonra, sizin hırıltı dosyasında Sonra

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

:

Önce Js için kodu bu eklenti, kullandığınız dosyaya göre js dosya listesini güncellemeniz gerekir. önemli ihbar - Eğer bir command line config variable ile çalışmak üzere, satır içi seçeneği Sonunda

kullanmak gerekir (ve yeni bir hedefe) aynı dosyasını güncelleme planlıyorsanız, aşağıdaki özel görev eklemek hem senin hırıltı dosyası: Ayrıca grunt baseUrl çalıştırabilirsiniz yüzden bir geri dönüş url koymak

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

Bildirimi ve gr: Sonunda

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

, şöyle baseURL görevi çalıştırmak unt, baseUrl'inizi tanımlanmış birinize ayarlayacaktır.

+0

.js dosyasının eklenmesi, gerekenden daha karmaşıktır çünkü Jetbrains'i gereksiz şeyler (örneğin, yarı-kolon veya herhangi bir şey gibi) hakkında uyarmaktan hoşlanmıyorum. Ayrıca @echo'nun benim için bazı sorunları vardı, bu yüzden el ile kapanış çıktı; *noktalı virgül* –

İlgili konular