2013-08-24 13 views
13

私はGruntjsを使用して構築されたプロジェクトでRestangularを使用しています。ここでは抜粋です。Gruntjsを使用してRestangular.baseUrlを設定してください

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

私は、CLIまたはデフォルトで指定された場合に指定されていない場合baseUrlに異なる値を持っているしたいと思います:

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

はどのように私はそれを行うことができますか?

答えて

6

Grunt preprocessの助けを借りて、ファイル内のテンプレート(と他のもの)を置き換えるのに便利です。

まず、あなたのの.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 */ 

その後、あなたのイサキファイルで、イサキの前処理をインストールした後(つまりあなたは以下の構成を追加npm install grunt-preprocess --save-dev:明らかに

preprocess: { 
     options: { 
      context: { 

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

を使用する場合は、これまで使用していたファイルに合わせてjsファイルリストを更新する必要があります。重要通告 - あなたはcommand line config variableで動作するためには、インラインオプション最後に

を使用する必要があります(とは、新しい宛先に)同じファイルを更新することを計画している場合に、次のカスタムタスクを追加します同様にあなたの面倒ファイル:あなたもgrunt baseUrlを実行することができますので、私は代替URLに入れ

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

お知らせし、GR:​​最後に

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にタスクを実行しますuntはあなたの定義したものにbaseUrlを設定します。

+0

.jsファイルへの挿入は、私がすべての種類の不必要なもの(セミコロンなど)について私に警告するのが嫌いなので、もっと複雑です。また、@echoは私のためにいくつかの問題を抱えていたので、私は手動で終了を出力しました。 *セミコロン* –

関連する問題