2

SquishItを使用して、MVC 3 プロジェクトで JavaScript ファイルを結合および縮小しています。オフラインの cache.manifest を作成しようとしていますが、編集ごとに変更されるハッシュ コードが原因で、私は死んでいます。バンドルに追加されたハッシュを削除する方法はありますか?

BundleBase.csクラスをチェックインし、メソッドを確認しましたHashKeyNamedが、どこで使用するかわかりません。

結合するための私の既存の方法は次のとおりです。

@Html.Raw(SquishIt.Framework.Bundle.JavaScript()
.Add("~/js/libs/persistence.js")
.Add("~/js/offline.common.js")
.Add("~/js/offline.syncmanager.js")
// snip...
.ForceRelease()    
.WithMinifier(SquishIt.Framework.JavaScript.Minifiers.JavaScriptMinifiers.NullMinifier)    
.Render("~/js/offline_script.js"))
4

3 に答える 3

3

パーティーに遅れてすみません。

最新バージョンには、必要なことを行う .WithoutRevisionHash() というバンドルのメソッドがあります。このメソッドは、ここで言及されているJacobのプル リクエストのおかげで実現しました。

メソッド自体は、 .HashKeyNamed() と呼ばれる既存のメソッドの単なるラッパーであり、彼が指摘したように、空の文字列で呼び出すことができ、目的の結果を達成できます。願わくば、新しい方法がもう少し直感的/発見可能であることを願っています:)

于 2012-06-12T16:09:27.767 に答える
2

私は方法があるとは思わない。ここですべてのパブリック API オプションを確認できます: https://github.com/jetheredge/SquishIt/blob/master/SquishIt.Framework/Base/IBundle.cs

ただしOSSなので、いつでもプロジェクトをフォークして追加できます!

幸運を。

于 2012-02-23T03:10:36.520 に答える
2

私は最近、 SquishItでこれをより適切にサポートするためにプルを提出しましたが、それまでの間、独自のカスタムを作成してメソッドを使用することでこれを実現できると思います。JavaScriptBundleHashKeyNamed()

public class NoHashJavaScriptBundle : JavaScriptBundle
{
    public NoHashJavaScriptBundle()
        : base()
    { }

    protected override string BeforeMinify(string outputFile, List<string> files, IEnumerable<string> arbitraryContent)
    {
        // Set the hash key to empty to keep it from being appended in Render.
        HashKeyNamed(string.Empty);

        return base.BeforeMinify(outputFile, files, arbitraryContent);
    }
}

次に、あなた_Layoutは次のようなことができます:

@Html.Raw(new NoHashJavaScriptBundle()
.Add("~/js/libs/persistence.js")
.Add("~/js/offline.common.js")
.Add("~/js/offline.syncmanager.js")
// snip...
.ForceRelease()    
.WithMinifier(SquishIt.Framework.JavaScript.Minifiers.JavaScriptMinifiers.NullMinifier)    
.Render("~/js/DontHashMeBro.js"))
于 2012-02-25T16:10:42.367 に答える