Развертывание изображений после CSS Minification / Merging - PullRequest
0 голосов
/ 29 июня 2011

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

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

  1. / Активы / Стили / site.css
  2. / Активы / Стили / Страницы / Page1.css
  3. / Активы / Стили / Страницы / Page2.css
  4. / Активы / Стили / Страницы / Page-nth.css
  5. / Активы / Стили / Partials / Partial1.css
  6. / Активы / Стили / Partials / Partial1.css
  7. / Активы / Стили / Partials / Partial-nth.css

Нечто подобное.

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

.

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

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

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

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

1 Ответ

0 голосов
/ 30 июня 2011

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

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

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

...