我正在使用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"))
答案 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 pull在SquishIt中提供了更好的支持,但同时我认为您可以通过创建自己的自定义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"))