Главная > .NET, JavaScript > Вышел Bundle Transformer 1.6.10

Вышел Bundle Transformer 1.6.10

Логотипы библиотек Bundle Transformer, в которые были внесены изменения в версии 1.6.10

Новая версия Bundle Transformer характеризуется следующими изменениями: большая часть сборок теперь подписана; в ядре, были исправлены ошибки, возникавшие при обработке путей; были обновлены некоторые модули (BundleTransformer.SassAndScss, BundleTransformer.CoffeeScript, BundleTransformer.TypeScript, BundleTransformer.MicrosoftAjax, BundleTransformer.Yui, BundleTransformer.UglifyJs, BundleTransformer.Csso и BundleTransformer.WG) и создана новая версия демонстрационного сайта ASP.NET Web Pages.

Рассмотрим основные нововведения данной версии:

Подписанные сборки

Почти все сборки Bundle Transformer подписаны (за исключением BundleTransformer.Yui.dll) и могут быть размещены в GAC.

Ядро

В BundleTransformer.Core были исправлены следующие ошибки:

  1. Улучшено экранирование шаблонов динамически создаваемых регулярных выражений. При исправлении данной ошибки использовался пулл реквест «Improved AppPath Regex escaping» от пользователя Duckaroy.
  2. Исправлена ошибка, возникавшая при преобразовании относительных путей вида ./images/icons/game.png в абсолютные.

Трансляторы

Bundle Transformer: Sass and SCSS

Модуль BundleTransformer.SassAndScss теперь использует собственный компилятор Sass- и SCSS- кода, который был реализован на основе исходного кода библиотеки SassAndCoffee.Ruby. К сожалению, данный компилятор, также как и библиотека SassAndCoffee.Ruby, поддерживает устаревшую версию Sass — 3.2.0 alpha.

Bundle Transformer: CoffeeScript

В модуле BundleTransformer.CoffeeScript была реализована поддержка CoffeeScript версии 1.4.0-3.

Bundle Transformer: TypeScript

В BundleTransformer.TypeScript была добавлена поддержка TypeScript версии 0.8.1 и исправлены следующие ошибки:

  1. Ошибка №10. Наличие циклических ссылок на зависимости (задаются с помощью документирующих тегов reference) создавало бесконечный цикл.
  2. Ошибка №13. При экспортировании классов, объявленных внутри модулей, возникала ошибка.
  3. Ошибка №14. Пути вида ./BaseClass.ts и BaseClass.ts, объявленные в тегах reference, считались разными, что приводило к дублированию ссылок на зависимости.

Минимизаторы

Bundle Transformer: Microsoft Ajax

В модуле BundleTransformer.MicrosoftAjax была обновлена библиотека Microsoft Ajax Minifier до версии 4.74.

Bundle Transformer: YUI

В BundleTransformer.Yui была обновлена библиотека YUI Compressor for .Net до версии 2.1.1.0.

Bundle Transformer: UglifyJS

В BundleTransformer.UglifyJs был обновлен код минимизатора UglifyJS до версии 1.3.4-1.

Bundle Transformer: CSSO

В BundleTransformer.Csso был обновлен код минимизатора CSSO до версии 1.3.6. Кроме того, пакеты BundleTransformer.Csso.x86 и BundleTransformer.Csso.x64 были объединены в один — BundleTransformer.Csso. Теперь библиотека BundleTransformer.Csso сама в процессе выполнения подключает нужную версию Noesis Javascript .NET. 32- и 64-разрядные версии сборки Noesis.Javascript.dll расположены в директории App_Data/Noesis.Javascript (данная директория должна копироваться при развертывании).

Bundle Transformer: WebGrease

В BundleTransformer.WG была обновлена библиотека WebGrease до версии 1.3.0. К сожалению, в семантическом CSS-минимизаторе WebGrease 1.3.0 еще не исправлена ошибка, вызывающая некорректную обработку дробных числовых значений, целая часть которых равна нулю.

Демонстрационный сайт ASP.NET Web Pages

Архив с примером сайта ASP.NET Web Pages, использующим Bundle Transformer (установлены все модули, кроме BundleTransformer.WG), можно скачать по следующей ссылке. Изначально данный демо-сайт был создан для моего выступления «Bundle Transformer – инструмент для клиентской оптимизации в среде ASP.NET» на 8-й встрече московского сообщества JavaScript-разработчиков MoscowJS.

Сейчас уже нет деления на 32- и 64-разрядную версию демо-сайта, т.к. библиотека BundleTransformer.Csso может работать на обоих платформах.

Реклама
  1. tstar
    22.11.2012 в 15:00

    Добрый день!
    Никак не могу понять, намучился уже с небольшой проблемой, которую, пока что, заметил только на модальных диалогах jQuery UI, там где используется слой наложения, закрывающий полупрозрачностью всю страницу. Так вот, на локальной машине все великолепно, а на сервере полностью пропадает прозрачность и исчезает содержимое страницы под диалогом. После анализа стилей, я пришел к выводу, что неправильно передается стиль для слоя наложения. Перепробовав все CSS минификаторы, попробовал указать , те, полностью отказаться от минификации. В результате, глюк все равно остался. Это натолкнуло меня на мысль, что сторонние минификаторы тут ни при чем. Привожу оригинальный стиль слоя .ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } и то, что получилось в результате: .ui-widget-overlay { background: #666666 url(«/Content/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50»); }
    Странно, что размер результата вышел больше, но не в этом суть. Дело в том, что все атрибуты позиционирования и прозрачности слоя каким-то чудным образом попали в атрибут url, и атрибут Alpha перед конечной скобкой получил двойные кавычки, которые открылись в атрибуте url. Что-то таки сильно обрабатывает файл стилей, при этом, очень некорректно, хотя, указан NullMinifier. Если подключить сторонние минификаторы, то они уже пытаются минифицировать испорченный файл и в результате — имеем проболемы на рабочем сервере.
    Скажите пожалуйста, это хоть не мой косяк и его можно исправить?
    Спасибо.

    • tstar
      22.11.2012 в 15:06

      Дополнение, так как обрезался указанный мною кусок из Web.config. Там я указал css defaultMinifier=»NullMinifier» usePreMinifiedFiles=»false», и даже в этом случае имею на выходе испорченный файл стиля.

    • tstar
      22.11.2012 в 15:24

      Еще одна странность. Создал копию стиля jQuery UI, назвал файл jquery-ui.min.css, добавил в описание свой текст, что бы убедиться, что действительно был взят мой файл, в конфиге указал css defaultMinifier=»NullMinifier» usePreMinifiedFiles=»true» — что бы сжатый файл не подвергался обработке, а в результате, та же проблема, тот же неправильный стиль у слоя наложения, хотя был взят мой файл, якобы сжатый. По моему, с опцией usePreMinifiedFiles=»true» файл не должен был меняться вообще. Что с ним произошло? Почему в браузер попадают неверные данные? И кто вообще добавляет «/Content/themes/ui-lightness/» в урл стиля? Может быть, Ваша библиотека тут даже и не причем,и надо искать виновника в чем-то другом?
      Простите за много текста, просто не знаю, как решить эту проблему и где начать копать.

      • 22.11.2012 в 19:28

        Здравствуйте, tstar!

        Спасибо за обратную связь! Ошибка возникала при преобразовании в CSS-коде относительных путей в абсолютные. В версии 1.6.11 данная ошибка исправлена.

  2. tstar
    22.11.2012 в 20:36

    Супер! Спасибо! Не ожидал такой оперативности. После первых тестов — все заработало с пустыми минификаторами, потом проверю на других.

  3. tstar
    23.11.2012 в 15:00

    Класс! Все проверил, все работает, даже YuiCssMinifier и YuiJsMinifier стали отлично работать. Большое спасибо!

  4. ardi
    24.05.2013 в 16:28

    Использую версию 1.6.25. В BundleConfig.cs создаю бандлы. Все хорошо комбинируется и минифицируется, но gzip сжатие только у стилей, а у скриптов нет как понял. Скажите есть ли возможность и у скриптов включить gzip?

    • 24.05.2013 в 16:41

      К сожалению, не могу ответить на данный вопрос, т.к. GZip-сжатие производится на уровне Microsoft ASP.NET Web Optimization Framework. Попробуйте задать данный вопрос на официальном сайте проекта ASP.NET Web optimization — https://aspnetoptimization.codeplex.com

    • 25.05.2013 в 14:56

      Ardi, у меня YSlow показывает, что GZip-сжатие применено и к стилям, и к скриптам.

  5. ardi
    27.05.2013 в 08:29

    у меня при публикации на сервере у стилей заголовки ответа Content-Encoding gzip, а у скриптов нет. Может что-то не правильно настраиваю?
    Вот config:

  6. ardi
    27.05.2013 в 16:09

    все гораздо проще. в iis 7.5. настройка сжатие динамического контента галка и соответственно добавление mime 🙂

  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: