Бандл… Пара-пара-па хэй! или Bundle Transformer шагает по планете
Несколько дней назад я обнаружил, что мой Twitter-аккаунт @taritsyn был взломан и через него в течение двух недель рассылался спам на русском и украинском языке. Я был очень удивлен, что стал мишенью для спамеров, т.к. мой твиттер читает сравнительно небольшое количество подписчиков.
Я решил выяснить, почему мной заинтересовались спамеры, и после нескольких часов гугления, понял, что мой Open Source-проект Bundle Transformer стал пользоваться популярностью. Я обнаружил большое количество упоминаний о Bundle Transformer в блогах и твиттер-лентах зарубежных технических специалистов. Среди этих упоминаний есть и серьезные технические статьи:
- Статья Тони Вильямса «Bundling single & multiple files in a view for MVC 3/4»
- Статья Кристофера Дойча «Using Less and Twitter Bootstrap in ASP.NET MVC4»
- Статья Бена Кулла «Using LESS CSS With MVC4 Web Optimization»
- Пост «Who could ask for more with LESS CSS? (Part 2 of 3–Setup)» в блоге ToString(theory);
- Статья Мэтта Своффера «MVC4 + LESS + Bundle.Transformer.LESS + Responsive Grid»
Из списка статей хорошо видно, что Bundle Transformer чаще всего используется для трансляции LESS-кода в CSS. Статистика сайта NuGet Gallery также подтверждает данный факт. Вообще, у разработчиков, использующих LESS, очень популярна следующая связка модулей — BundleTransformer.Less + BundleTransformer.Yui. Хотя, по моему мнению, связка — BundleTransformer.LessLite + BundleTransformer.MicrosoftAjax была бы более эффективной, потому что BundleTransformer.LessLite использует более легковесную версию библиотеки dotless, а Microsoft Ajax Minifier сжимает CSS- и JS-код гораздо эффективнее, чем YUI Compressor for .Net.
Но, к сожалению, в большинстве этих статей приведен немного некорректный способ использования Bundle Transformer: экземпляр бандла, создается не с помощью класса Bundle
, а с помощью его подклассов: StyleBundle
и ScriptBundle
. Классы StyleBundle
и ScriptBundle
уже содержат экземпляры встроенных трансформаций-минимизаторов: CssMinify
и JsMinify
. Поэтому в случаях, когда подключены модули-минимизаторы Bundle Transformer, это может приводить к двойной минимизации кода. Вообще, при работе с Bundle Transformer нужно понимать, что в классах CssTransformer
и JsTransformer
может производиться сразу несколько операций: выбор между полными и предварительно-минимизированными версиями файлов, трансляция кода с промежуточных языков, минимизация кода полных версий файлов, преобразование относительных путей в абсолютные (только в CSS-коде) и объединение кода файлов. Набор этих операций в каждом конкретном случае определяется набором установленных модулей и настройками из файла Web.config
. С целью предотвращения подобных некорректных способов использования в Bundle Transformer 1.7.7 Beta 1 были реализованы аналоги классов StyleBundle
и ScriptBundle
, ориентированные на работу с Bundle Transformer: CustomStyleBundle
и CustomScriptBundle
. Класс CustomStyleBundle
использует CssTransformer
в качестве трансформации по умолчанию, а CustomScriptBundle
использует JsTransformer
. Кроме того, эти классы используют экземпляр класса NullBuilder
в качестве построителя кода по умолчанию, что позволяет увеличить производительность Bundle Transformer.
За все время существования проекта наибольшее впечатление на меня произвели три следующих упоминания в Интернете:
1. Рейтинг NuGet Must Haves
В рейтинге сайта NuGet Gallery в категории ASP.NET ядро Bundle Transformer занимает 24-е место и уже вплотную подобралось к своим основным конкурентам: Cassette и Combres. В данном рейтинге учитывается всего один показатель – общее количество загрузок пакета. Поэтому верхние позиции рейтинга, как правило, занимают пакеты-старожилы.
Но помимо официального рейтинга NuGet-пакетов существует и независимый рейтинг — NuGet Must Haves. При построении результатов рейтинга NuGet Must Haves учитывается целый ряд показателей: среднее количество загрузок пакета в день, дата последнего релиза, количество голосов пользователей и др. Поскольку при расчете рейтинга основной упор делается на интенсивность загрузок, то в той же самой категории ядро Bundle Transformer занимает более высокую позицию — 8-e место (идет сразу после пакета Microsoft ASP.NET MVC 4):
2. Интернет радио-шоу Code Name «APS»
В 21-м выпуске радио-шоу Code Name «APS», которое выходит на Бинарном радио, местные диджеи в шутливой манере рассказали об основных нововведениях Bundle Transformer 1.6.5. В качестве основы для текста выступления послужила моя статья с Хабра «Вышел Bundle Transformer 1.6.5». Вы можете прослушать полную версию передачи или скачать отдельный фрагмент про Bundle Transformer.
3. Вакансия компании «СТ Группа»
Белорусская ИТ-компания «СТ Группа» включила опыт работы с Bundle Transformer в список требований, которым должен соответствовать кандидат на позицию «Web-программист ASP.NET (senior/mid)»:
Заключение
В заключении, я хотел бы поблагодарить отечественных и зарубежных технических специалистов за их статьи, обзоры и радио-передачи о Bundle Transformer. А также поблагодарить всех разработчиков, использующих Bundle Transformer в своих проектах, за то, что они ежедневно голосуют за него, загружая пакеты через NuGet.