Вышел Bundle Transformer 1.6.5

    Логотипы библиотек Bundle Transformer, в которые были добавлены изменения в версии 1.6.5
    Основным нововведением в новой версии Bundle Transformer стала поддержка языка TypeScript. Кроме того, были внесены изменения в ядро продукта и в следующие модули: BundleTransformer.MicrosoftAjax, BundleTransformer.Yui и BundleTransformer.Csso.

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

    Ядро


    В BundleTransformer.Core появилась возможность отказаться от использования предварительно минимизированных файлов (например, файлы с расширениями *.min.css и *.min.js) и производить минимизацию кода исключительно средствами выбранного минимизатора. За включение/отключение использования предварительно минимизированных файлов отвечают атрибуты usePreMinifiedFiles конфигурационных элементов css и js. В следующем примере показан код, отключающий использование предварительно минимизированных файлов.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    	...
    	<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
    		<core>
    			<css usePreMinifiedFiles="false">
    				...
    			</css>
    			<js usePreMinifiedFiles="false">
    				...
    			</js>
    			...
    		</core>
    		...
    	</bundleTransformer>
    	...
    </configuration>
    

    По умолчанию атрибутам usePreMinifiedFiles присвоены значения равные true.

    Данная возможность пригодится тем разработчикам, которые хотят применить ко всему CSS- и/или JS-коду своего веб-приложения алгоритмы минимизации, обладающие наивысшей степенью сжатия. Но следует помнить, что некоторые JS-библиотеки не получится сжать без ошибок. Кроме того, объем сжимаемого кода увеличится, что приведет увеличению продолжительности минимизации на лету.

    Трансляторы


    Bundle Transformer: TypeScript


    Модуль BundleTransformer.TypeScript содержит адаптер-транслятор TypeScriptTranslator, производящий трансляцию TypeScript-кода в JavaScript. Если вы еще ничего не слышали о TypeScript, то рекомендую вам прочитать следующие статьи: «TypeScript: язык для разработки больших приложений на JavaScript» Анатолия Ализара и «TypeScript для ASP.NET MVC 4 веб-приложений» Андрея Веселова.

    Параметры компиляции TypeScript-кода можно настроить с помощью конфигурационной секции typeScript в файле Web.config:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    	...
    	<bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd">
    		<typeScript useNativeMinification="false" useDefaultLib="true" 
    			propagateConstants="false" errorOnWith="true"
    			inferPropertiesFromThisAssignment="false" 
    			codeGenTarget="EcmaScript3">
    			<style bitwise="false" blockInCompoundStatement="false" 
    				eqEqEq="false" forIn="false" emptyBlocks="true" 
    				newMustBeUsed="false" requireSemicolons="false" 
    				assignmentInConditions="false" eqNull="false" 
    				evalOk="true" innerScopeDeclarationsEscape="true" 
    				functionsInLoops="true" reDeclareLocal="true" 
    				literalSubscript="true" implicitAny="false" />
    		</typeScript>
    		...
    	</bundleTransformer>
    	...
    </configuration>
    

    Названия и возможные значения большего количества свойств совпадают с конфигурационными свойствами исходного компилятора, поэтому я рассмотрю свойства, назначение которых может быть не очевидно:
    • useNativeMinification="(true|false)". Разрешает минимизацию генерируемого JS-кода средствами TypeScript-компилятора. При встроенной минимизации производится удаление пробельных символов и комментариев. Сжатый таким образом код уже не подвергается минимизации средствами модуля-минимизатора, поэтому использовать встроенную минимизацию следует только в случаях, когда по каким-то причинам использование модуля-минимизатора невозможно. Данное конфигурационное свойство управляет сразу двумя свойствами компилятора: minWhitespace и emitComments.
    • useDefaultLib="(true|false)". Разрешает загрузку в компилятор определений общих типов, объявленных в файле lib.d.ts. К общим типам относятся основные типы из ECMAScript, DOM и Windows Script Host.

    Чтобы скомпилировать код TS-файла, в котором используются типы, объявленные в других файлах, вам необходимо добавить в код ссылки на эти файлы. Ссылки на файлы добавляются с помощью документирующих тегов <reference> (более подробную информацию о данном теге вы можете прочитать в статье «Облегчаем работу с JS- и CSS-кодом в Visual Studio»).

    /// <reference path="jquery.d.ts" />
    /// <reference path="TranslatorBadge.ts" />
    
    /// <summary>
    /// Creates colored badge for translator
    /// </summary>
    ;class ColoredTranslatorBadge extends TranslatorBadge {
    	public getTextColor(): string {
    		/// <summary>
    		/// Gets a text color of badge
    		/// </summary>
    		/// <returns type="String">
    		/// Text color of badge
    		/// </returns>
    		return this.$linkElem.css("color"); 
    	}
    
    	public setTextColor(color: string): void {
    		/// <summary>
    		/// Sets a text color of badge
    		/// </summary>
    		/// <param name="color" type="String">
    		/// Text color of badge
    		/// </param>
    		this.$linkElem.css("color", color);
    	}
    
    	public getBorderColor(): string {
    		/// <summary>
    		/// Gets a border color of badge
    		/// </summary>
    		/// <returns type="String">
    		/// Border color of badge
    		/// </returns>
    		return this.$badgeElem.css("border-color");
    	} 
    
    	public setBorderColor(color: string) {
    		/// <summary>
    		/// Sets a border color of badge
    		/// </summary>
    		/// <param name="color" type="String">
    		/// Border color of badge
    		/// </param>
    		this.$badgeElem.css("border-color", color);
    	}
    }
    

    В приведенном выше коде с помощью документирующих тегов <reference> добавляются ссылки на файлы jquery.d.ts и TranslatorBadge.ts.

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


    Bundle Transformer: Microsoft Ajax


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

    Bundle Transformer: YUI


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

    Bundle Transformer: CSSO


    В BundleTransformer.Csso (x86, x64) был обновлен код минимизатора CSSO до версии 1.3.4.

    Комментарии 6

      +1
      Интересная вещь. Посмотрите еще Cassette.

      У себя на проекте используем Chirpy.
        +1
        Спасибо, но я уже пробовал все перечисленные продукты и Bundle Transformer писал с оглядкой на них.
          +1
          Во всех продуктах такого типа мне не нравится их привязка в .NET-у — не все пишут веб-морды на дотнете, но многие (некоторые?) работают в VS.

          Chirpy вешается плагином к студии, трекает изменения и минифаит — никаких зависимостей.

            +1
            У Chirpy есть один существенный недостаток: чтобы обработать файл минимизатором нужно добавить префикс к расширению, что создает проблемы при работе с некоторыми менеджерами ресурсов. Мне больше нравится подход, используемый в VS-расширении Minifier, когда минимизатор привязывается к файлу с помощью свойства Custom Tool.

            Кстати, под WebMatrix есть хороший аналог Chirpy под названием OrangeBits Compiler.
              0
              Не надо никаких префиксов. Префиксы нужны только, если у вас нет общего файла конфигурации, без которого Chirpy не знает, что обрабатывать, а что нет.

              Делаете конфиг, в нем пишите что и как собирать, и при каждом сохранении любого файла из этого конфига — Chirpy обработает файлы.
                0
                Спасибо! Честно говоря, не знал об этой возможности.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое