Есть ли способ удалить хэш из объединенных файлов JavaScript в SquishIt?
Я использую 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 ответа
Извините, я опоздал на вечеринку.
В последней версии есть метод для пакетов, называемый.WithoutRevisionHash(), который будет делать то, что вам нужно. Этот метод фактически появился благодаря упомянутому здесь требованию Jacob.
Сам метод является просто оболочкой для ранее существующего метода с именем.HashKeyNamed(), который можно вызывать с пустой строкой, как он указал, для достижения желаемого результата. Надеемся, что новый метод немного более интуитивно понятен / открыт, хотя:)
Я не верю, что есть способ. Вы можете увидеть все общедоступные параметры API здесь: https://github.com/jetheredge/SquishIt/blob/master/SquishIt.Framework/Base/IBundle.cs
Хотя это OSS, так что вы всегда можете раскошелиться на проект и сделать дополнение!
Удачи.
Я недавно представил запрос на лучшую поддержку этого в 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"))