Em um post passado eu falei da importância de unir e minificar arquivos js em determinados casos e discuti “quando” fazer isso, vou mostrar “como” minificar usando o YUI Compressor com tasks do Apache Ant montados por Viktor Lieskovsky do Javaflight.
Esse pequeno tutorial-guia faz parte do material dos meus cursos de Javascript e Ajax e serve para deixar um histórico acessÃvel aos alunos e fácil para leitores que por ventura precisem.
Preparei um ambiente de execução com todas as dependências no projeto Remendux onde vocês podem fazer checkout e rodar o build ant localmente como um projeto do eclipse – estou usando o plugin para o SVN Subclipse.
Montei um script ant padrão bem simples de ser entendido por iniciantes:
<?xml version="1.0" encoding="UTF-8"?> <project name="jsmin" default="main" basedir="."> <!-- Propriedades para definir nomes de pastas que usaremos --> <property name="js" value="js"/> <property name="build" value="build"/> <property name="lib" value="lib"/> <property name="output" value="output"/> <!-- Propriedades para definir nomes os arquivos necessários --> <property name="yui-compressor.jar" location="${lib}/yuicompressor-2.4.2.jar" /> <property name="yui-compressor-ant-task.jar" location="${lib}/yui-compressor-ant-task-0.3.jar" /> <!-- Incluir as libs necessárias no classpath --> <path id="task.classpath"> <pathelement location="${yui-compressor.jar}" /> <pathelement location="${yui-compressor-ant-task.jar}" /> </path> <!-- Definição da task para o Ant reconhecer --> <taskdef name="yui-compressor" classname="net.noha.tools.ant.yuicompressor.tasks.YuiCompressorTask"> <classpath refid="task.classpath"/> </taskdef> <target name="clean"> <delete dir="build"/> <delete dir="output"/> <mkdir dir="build"/> <mkdir dir="output"/> </target> <target name="main" depends="clean"> <!-- Tag do Ant para concatenar arquivos [ http://ant.apache.org/manual/CoreTasks/concat.html] os arquivos são unidos na sequência de definição no fileset --> <concat destfile="${output}/remendux.js" force="no"> <fileset file="${js}/util.js" /> <fileset file="${js}/remendux.js" /> </concat> <!-- Task do yui-compressor --> <yui-compressor warn="false" munge="true" preserveallsemicolons="false" fromdir="${output}" todir="${build}"> </yui-compressor> </target> </project>
Após a importação, para executar o script – que chamei de build-yui.xml – basta apenas executar com o ant pelo eclipse – vide imagem abaixo – ou em linha de comando. Estou usando o Ant 7.1 com java 6u10 e Eclipse 3.4, portanto caso haja um erro atente para a versão das ferramentas usadas.

Após executar, observe a redução de tamanho na versão minificada [../build/remendux-min.js] para a versão concatenada [../output/remendux.js ]. A versão final ficou com 30% do tamanho com documentação e identação.
Buildfile: C:\workspace\remendux\build-yui.xml [echo] Building output clean: [mkdir] Created dir: C:\workspace\remendux\build [mkdir] Created dir: C:\workspace\remendux\output main: [yui-compressor] [30%] remendux.js [5775] ---> remendux-min.js [1734] [yui-compressor] [JavaScript] Compressed 1 files to 30% (5KB to 1KB, saving 4KB) [yui-compressor] [CSS] No files to compress, or all files already up to date [yui-compressor] Compressed 1 files to 30% (5KB to 1KB, saving 4KB) BUILD SUCCESSFUL Total time: 12 seconds
Categories: Ajax, Engenharia de Software, Frameworks, High Performance, JavaScript, JSON, Melhores práticas, Otimização, Scripting, Web Development, YUI ~ ~ Trackback
Leave a Reply