2016-08-18 6 views
-1

いくつかの環境設定を変更するためにgruntを使用する角度のあるWebサイトがあります。Visual Studio web.config変換とgrunt

私が望むのは、これらの欲しい変数を制御するweb.configのアプリ設定です。そうすれば、さまざまな環境に昇格するたびにweb.config変換を使用できます。

これは正しい方法ですか?もしそうなら、私はこれをどのように実装しますか?そうでない場合、よりよい解決策は何ですか?

答えて

0

私はGulpを使用しますが、同じロジックが適用されます。

まず、Web Config Transformを使用するのは適切なアプローチではありませんが、VS拡張機能を記述しなくてもそれを行うことはできません。

Gruntには、ノード環境変数にアクセスするための環境変数プラグイン(https://github.com/jsoverson/grunt-env)があります。

このようにして、各状態値を保持する子オブジェクトを持つオブジェクトをあなたのgruntファイルに配置することができます。

var settings = { 
development: [ 
    { searchApi: 'http://dev.mysite' }, 
    { title: 'MySite (DEV)' } 
], 
qa: [ 
    { searchApi: 'http://qa.mysite' }, 
    { title: 'MySite (QA)' } 
], 
live: [ 
    {searchApi: 'https://www.mysite' }, 
    { title: 'MySite' } 
]}; 

次に、関連する状態配列のループを実行し、検索して置換します。

gruntファイルの実行時に手動で値を切り替えることも、MSBuildと競合して現在の設定に従って変数を設定することもできます。 IIRC、Gruntは同期型なので、MSBuildでうまくいくはずです。

EDIT

しばらくガルプ/うなり声とのMSBuildを使用して一人で去った後、私はそれに戻って来て、解決策を考え出しました。

まず、あなたは(ガルプ用)次のコードを持っているの.batファイルを、必要があります、

set NODE_ENV=%1 
gulp --gulpfile gulpfile.js 

次のソリューションのプロパティを開き、ビルド前に、中に追加します。

CD $(ProjectDir) 
CALL deploy.bat $(ConfigurationName) 

これは.batファイルを呼び出し、現在の構成を引数として渡します。次に、NODE_ENV値を設定し、gulpを実行します。

AFAICTでは、シーケンシャルコマンド呼び出しがMSBuildと異なるコンテキストで実行されるように、NODE_ENV値が失われるため、これをバッチとして実行する必要があります。

MSBuildにnpmとbowerを実行させるのにも同様のタックを使用できますが、それはもう1日の実験です!

関連する問題