Есть ли способ удалить хэш из объединенных файлов JavaScript в SquishIt? - PullRequest
2 голосов
/ 23 февраля 2012

Я использую SquishIt , чтобы объединить и минимизировать мои файлы JavaScript в проекте MVC 3.Я пытаюсь создать автономный 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"))

Ответы [ 3 ]

3 голосов
/ 12 июня 2012

Извините, что опоздал на вечеринку.

В последней версии есть метод для пакетов, называемый .WithoutRevisionHash (), который будет делать то, что вам нужно.Фактически этот метод появился благодаря упомянутому здесь Jacob запросу извлечения.

Сам метод является просто оболочкой для ранее существующего метода .HashKeyNamed (), который можно вызыватьпустая строка, как он указал для достижения результата, который вы после.Надеемся, что новый метод немного более интуитивно понятен / обнаружим, хотя:)

2 голосов
/ 25 февраля 2012

Я недавно отправил запрос для лучшей поддержки этого в 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"))
2 голосов
/ 23 февраля 2012

Я не верю, что есть способ.Вы можете увидеть все общедоступные параметры API здесь: https://github.com/jetheredge/SquishIt/blob/master/SquishIt.Framework/Base/IBundle.cs

Это, однако, OSS, поэтому вы всегда можете раскошелиться на проект и сделать дополнение!

Удачи.

...