有没有办法从SquishIt中的组合javascript文件中删除哈希?

时间:2012-02-23 02:05:19

标签: javascript asp.net-mvc-3 squishit

我正在使用SquishIt在MVC 3项目中合并和缩小我的javascript文件。我正在尝试创建一个离线cache.manifest,编辑之间更改的哈希码会让我感到害怕。有没有办法删除附加到bundle的哈希值?

我在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"))

3 个答案:

答案 0 :(得分:3)

抱歉,我迟到了。

在最新版本中,有一个名为.WithoutRevisionHash()的bundle上的方法可以满足你的需要。由于此处提到的Jacob拉取请求,这种方法实际上已经形成。

该方法本身只是以前存在的一个名为.HashKeyNamed()的方法的包装器,该方法可以用空字符串调用,因为他指出要完成你所追求的结果。希望新方法更直观/可发现,但是:)

答案 1 :(得分:2)

我不相信有办法。您可以在此处查看所有公共API选项:https://github.com/jetheredge/SquishIt/blob/master/SquishIt.Framework/Base/IBundle.cs

虽然这是OSS,所以你总是可以分叉项目并进行添加!

祝你好运。

答案 2 :(得分:2)

我最近submitted a pullSquishIt中提供了更好的支持,但同时我认为您可以通过创建自己的自定义JavaScriptBundle并使用HashKeyNamed()方法。

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"))