Развертывание изображений после CSS Minification/Merging

В этом проекте я использую Visual Studio 2010, .NET 4 и MVC 2, а YUI Compressor работает как событие после сборки.

Дело в том, что у нас был один большой файл CSS, который нельзя было обслуживать, поэтому мы разбили его на множество файлов CSS в разных папках.

  1. /Assets/Styles/Site.css
  2. /Assets/Styles/Pages/Page1.css
  3. /Assets/Styles/Pages/Page2.css
  4. /Assets/Styles/Pages/Page-nth.css
  5. /Assets/Styles/Partials/Partial1.css
  6. /Assets/Styles/Partials/Partial1.css
  7. /Assets/Styles/Partials/Partial-nth.css

Что-то вроде того.

Это хорошо для развития, но не для производства. На производстве у нас есть только 1 файл, который является объединенной / минимизированной версией всего, этот файл находится в /Assets/Styles/style.css

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

Я вижу несколько решений для этого, мы могли бы использовать абсолютные пути, мы могли бы иметь много уменьшенных / объединить CSS-файлы и поместить их в нужную папку (Pages.css / Partials.css) или мы могли бы использовать поддомен без файлов cookie (статический.domain.com), что я хотел бы сделать.

Итак, мой вопрос: как автоматически переименовать "../../image.png" в "http://static.domain.com/image.png" в моих файлах CSS автоматически? Может ли YUI Compressor сделать это? Должен ли я сделать консоль сборки проектов, которые делают именно это? Вы знаете инструмент, который сделает это для меня? Другие предложения?!

Заранее спасибо!

1 ответ

Решение

YUI-компрессор не может этого сделать.

Вам нужно перебрать файлы и заменить каждый путь новым абсолютным путем. Вы можете легко сделать это с помощью регулярного выражения. Я не знаю, можете ли вы сделать это легко в windows-batch, но это легко с unix sed или любым скриптом (perl, python...). Если вы более знакомы с.NET, вы можете создать консольный проект и запустить его как событие после сборки.

Надеюсь это поможет.

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