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,所以你可以随时 fork 项目并进行添加!

祝你好运。

于 2012-02-23T03:10:36.520 回答
2

我最近提交了一个 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"))
于 2012-02-25T16:10:42.367 回答