2016-07-04 13 views
0

私はレガシーなCSSファイルを持っていますが、これはあまり意味がありませんが、画像のハードコードされたドメインを参照しています。それは単純なCSSの痛みでしたが、私たちは開発段階でこれを汚い方法で処理することができました。そして、私はLESSたちの設定に応じて(開発、統合、生産)を使用して、このURLを「パラメータ化」と考えていた - のようなもの:Web Essentialsを使用して少ないファイルをパラメータ化する方法は?

#if DEBUG 
    @import 'debug' 
#elseif INTEGRATION 
    @import 'integration' 
#elseif PROD 
    @import 'production' 
#endif 

は、私も可能達成するために何をしたいですか?

は、私はMVCの.Net 5とウェブのEssentials 2013

+0

私が考えることができる1つのオプションは、環境固有の設定を構成ファイルなどに保存し、それぞれの環境に適切な設定でそのファイルのバージョンを保持することです。 .lessファイルをインポートすると、その中のすべての変数を使用できます。 @import "environmentSettings.css"; ここで、このcssファイルの変数を宣言するだけです。 – ArunGeorge

+0

@ArunGeorgeしかし、私たちのデプロイメントは自動化されているので、gitでそのようなファイルを無視することはできず、すべてのコンパイルが同じサーバー上で行われるため、環境ごとに特定のバージョンを保持することはできません。 – gobes

+0

各環境に支店はありませんか?もし持っていれば、このブランチに適した値で各ブランチにチェックインされたこのファイルのコピーを保つことができます。 環境ごとに異なるブランチがない場合は、ビルドプロセスにステップが必要です。これには、適切なファイルの選択などの環境固有のタスクがあります。これは、多くの利用可能なファイルの1つを選ぶ、またはプロパティファイルなどを使用してビルドプロセスの一歩です。 – ArunGeorge

答えて

0

を使用していますまあ、私は実際に解決策を見つけた:メイン.lessファイルが参照するファイルに特定のファイルをコピーするビルド前のイベントを使用して。

ので、main.less中: @myVar = "someDefaultValue";

:main.lessはデフォルト値で、すべての変数を見つけるように、充填材の一種である_Variables.less、で

@import (optional) "_Variables"; ...some code...

_VariablesRelease.lessで @myVar = "debugValue";

: _VariablesDebug.lessで

というように、各構成にはそれぞれの変数に正しい値を持つ_Variables{Configuration}.lessという名前の独自のファイルがあります。

最後に、ビルド前のイベントで:各コンパイルで

xcopy "$(ProjectDir)Path\To\Less\Files\_Variables$(ConfigurationName).less" "$(ProjectDir)Path\To\Less\Files\_Variables.less" /Y

、ファイル_Variables.lessは、構成によって必要なファイルに置き換えられ、main.lessをしてコンパイルされました正しい値。

関連する問題