このトピックの回答では、LESS および LessTranslator の BundleTransformer を使用して LESS ファイルに変数を渡す方法を示します。残念ながら SASS では、BundleTransformer の種類は利用できないプロパティ GlobalVariables です。ログインユーザーに依存するカスタム変数(色の値)でSASSファイルをコンパイルすることは可能ですか?
1418 次
2 に答える
1
私は SASS 拡張機能を使用したことがないので、はっきりとは言えませんが、いつでもカスタム バンドル変換を作成して、本質的に「テンプレート」ファイルを置き換えることができます。
したがって、そのように宣言された変数を持つSASSファイルを持つことができます
$variable: {{variable-placeholder}};
次に、次のようなものを使用して値を置き換えます。
public class ReplacePlaceholdersBundleTransform : IBundleTransform
{
private readonly IDictionary<string, string> _replacements;
public ReplacePlaceholdersBundleTransform()
{
_replacements = new Dictionary<string, string>();
}
public ReplacePlaceholdersBundleTransform(IDictionary<string,string> replacements)
{
_replacements = replacements ?? new Dictionary<string,string>();
}
public void Process(BundleContext context, BundleResponse response)
{
if (_replacements.IsNullOrEmpty())
return;
foreach (var replacement in _replacements)
{
response.Content = response.Content.Replace(replacement.Key, replacement.Value);
}
}
}
それを使用するには、変換をバンドルに追加します。
yourBundle.Transforms.Add(
new ReplacePlaceholdersBundleTransform(new Dictionary<string, Func<BundleContext, string>>
{
{"{{variable-placeholder}}", "red"},
}));
最適化フレームワークによって生成された完全な URL を取得するために、実行時にスクリプト ファイルにバンドル URL を挿入するスクリプト変換に類似したものを使用しました。SASS 変換が行われた後に変換が実行された場合、これは確かにうまくいかないかもしれませんが、これをテストするために SASS プロジェクトを起動する時間がありませんでした。
これが役立つことを願っています。
于 2015-06-02T20:38:59.443 に答える