6. 8. 2011

Minifikace CSS a JS pomocí YUI compress a Apache ANT – vylepšená verze s makrem

Před časem jsem zde psal o Apache ANT a Yui Compressoru. Přišel jsem na rychlejší a elegantnější způsob, jak minifikovat javascript a CSS soubory. Vše je možné zařídit prostřednictvím Ant makra:

<!-- Minifi css/js with YUI compressor -->
 <macrodef name="Minify" description="Minifi css/js with YUI compressor">
  <attribute name="file" />
  <attribute name="args" default="--charset utf-8 -o '@{file}'"/>
  <sequential>
    <java jar="omPress/tools/yuicompressor.jar" fork="true" failonerror="true" maxmemory="128m">
      <arg line="'@{file}' @{args}" />
    </java>
  </sequential>
</macrodef>

Předdefinované makro, stačí vložit do vašeho Apache Ant projektu a zavolat v libovolném targetu. Jako vstupní parametr vyžaduje makro pouze jméno souboru.

<target name="js.build">
 <Minify file="js/main.js" />
</target>

Pokud makro zavoláte bez nepovinného parametru args, dojde k přepsání originálního souboru minifikovanou verzí (viz hodnota default). Tohle chování je možné samozřejmě snadno změnit:

<target name="js.build">
 <Minify
   file="js/main.js"
   args="--charset utf-8 -o 'js/main.min.js'"
 />
</target>

YUI Compressor zvládne minifikovat také CSS soubory – stačí zavolat:

<target name="css.build">
 <Minify file="css/main.css" />
</target>
#ant, #apache, #build