1

このトピックの回答では、LESS および LessTranslator の BundleTransformer を使用して LESS ファイルに変数を渡す方法を示します。残念ながら SASS では、BundleTransformer の種類は利用できないプロパティ GlobalVariables です。ログインユーザーに依存するカスタム変数(色の値)でSASSファイルをコンパイルすることは可能ですか?

4

2 に答える 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 に答える