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 каталог.

Другие вопросы по тегам