ASP.NET MVC 4 Минификация и фоновые изображения
В настоящее время я использую ASP.NET MVC 4 CSS/JavaScript Optimizer. Он хорошо работает с моим собственным CSS/JavaScript, но я также хочу использовать его с плагинами. Каждый плагин имеет свою собственную папку:
~/Content/css // my own css, ok
~/Content/plugins/rateit
~/Content/plugins/chosen
~/Content/plugins/...
Я могу добавить эти файлы в оптимизатор:
var bundle = new Bundle("~/Content/opt", new CssMinify());
...
bundle.AddFile("~/Content/plugins/chosen/chosen.css", "*.css");
BundleTable.Bundles.Add(bundle);
Но в этом случае после оптимизации css находится в другой папке, и браузер больше не может найти фоновые изображения. Есть ли решение для автоматического изменения пути CSS для фоновых изображений?
Я могу скопировать все плагины в одну папку, но с большим количеством плагинов это не очень хорошая идея.
2 ответа
Можно взглянуть на RequestReduce. Это еще один минификатор / пакет, основанный на.net, и он перепишет все URL-адреса в минимизированном / пакетном css как абсолютные. Это включает в себя шрифты и фоновые изображения. Это также автоматически расширит любой импорт в CSS. Кроме того, где он думает, что может, он будет спрайт фоновых изображений.
У меня была та же проблема... Я использовал для связывания jQuery UI CSS со своим собственным, но, как вы упомянули, плагины используют свой собственный каталог. В моем случае это было:
~/Content/Site.css
~/Content/themes/base/*.css
Этот свернутый пакет ищет все изображения в ~/Content/, поэтому пользовательский интерфейс jQuery перестает работать правильно. Таким образом, единственный способ решить эту проблему - разделить эти CSS (мой и пользовательский интерфейс jQuery).
Кстати: до этого я не понимал, почему CSS связаны (в шаблоне MVC4) как ~/content/
вместо ~/bundles/
, Теперь я знаю, что это из-за проблемы с путем к изображениям в Content
каталог.