Automation Eclipse "Yui Compressor ..."

Eclipse PDT has this convenient built-in Yui Compressor in the context menu for files. But when you create a webapp that uses several of these files, it becomes tedious to compress files manually after each update. He does not even remember which files are compressed to file names, so you need to enter them again.

Is it easy to automate this process in Eclipse so that you can click "build" or something else and all the specified files will be compressed to their goals?

There is indeed a vacuum regarding the documentation of this Yui feature in Eclipse.

I use Eclipse Indigo 3.7.0 with PDT 3.0.0.v20110516-11, but both PDT and Yui have remained pretty similar since Galileo

-update -

Automation solutions, not Eclipse-native, but close:

  • GNU make makefile

    %-min.js: %.js ${java} -jar ${compressor} $< -o ${<:.js=-min.js} 
  • Windows package

     FOR %f IN (*.js) DO java -jar yuicompressor.jar %f -o deploy\%f 
  • Linux shellscript

     ls -1 *.js | awk '{printf("java -jar yuicompressor.jar %s -o deploy/%s",$1,$1)}' | /bin/sh 
  • ANT file

    See here: http://www.ubik-ingenierie.com/ubikwiki/index.php?title=Minifying_JS/CSS
    How to insert html / xml here?

Also see this question.

+4
source share
3 answers

Well, I really downloaded the jar and created an ANT task to compress CSS and JS. I am working on Tomcat, so it includes the tasks of downloading files, cleaning / directory and the like. Hope this helps.

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE project> <project name="MyProject" default="subir"> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <property name="project.name" value="MyProject" /> <property name="src.dir" location="src" /> <property name="web.dir" location="WebContent" /> <property name="lib.dir" location="WebContent/WEB-INF/lib" /> <property name="bin.dir" location="WebContent/WEB-INF/classes" /> <property name="minify.dir" location="minified" /> <property name="minify.sourcedir" location="${skin.dir}/resources/" /> <!-- <property name="minify.sourcedir" location="${web.dir}/resources/" /> --> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <property prefix="env" file="build.properties" /> <path id="project.classpath"> <pathelement location="${src.dir}" /> <fileset dir="${lib.dir}"> <include name="*.jar" /> </fileset> </path> <path id="yui.classpath.minifier"> <fileset dir="${lib.dir}"> <include name="YUIAnt.jar" /> <include name="yuicompressor-2.4.2.jar" /> </fileset> </path> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="checkTomcatHome"> <condition property="local.tomcathome.exists"> <available file="${env.TOMCAT_PRUEBAS}" type="dir" /> </condition> </target> <target name="subir" depends="checkTomcatHome" if="local.tomcathome.exists"> <echo message="El servidor Tomcat destino existe, buscando archivos para copia en el proyecto y en en OsmoCore/WebContent..." /> <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}"> <fileset dir="${web.dir}"> <include name="**/*.*" /> </fileset> </copy> <!--<echo message="Buscando archivos para copia en ${env.TOMCAT_PRUEBAS}/webapps/${project.name}/WEB-INF/classes..." /> <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}/WEB-INF/classes"> <fileset dir="${bin.dir}"> <include name="**/*.*" /> </fileset> </copy>--> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="WAR"> <delete file="${project.name}.war"/> <delete dir="TMP_WAR"/> <mkdir dir="TMP_WAR"/> <copy todir="TMP_WAR"> <fileset dir="${web.dir}"> <include name="**/*.*" /> </fileset> </copy> <copy todir="TMP_WAR/WEB-INF/classes"> <fileset dir="${bin.dir}"> <include name="**/*.*" /> </fileset> </copy> <delete dir="${project.name}.war"/> <zip destfile="${project.name}.war"> <zipfileset dir="TMP_WAR"> <include name="**/*.*" /> </zipfileset> </zip> <delete dir="TMP_WAR"/> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="subirCompleto" depends="checkTomcatHome" if="local.tomcathome.exists"> <echo message="El servidor Tomcat destino existe, buscando carpetas Work y ${project.name} en Webapps, para eliminar" /> <delete dir="${env.TOMCAT_PRUEBAS}/work" /> <delete dir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}" /> <antcall target="subir" /> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="borrarWork" depends="checkTomcatHome" if="local.tomcathome.exists"> <echo message="El servidor Tomcat destino existe, buscando carpeta Work a eliminar..." /> <delete dir="${env.TOMCAT_PRUEBAS}/work"/> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="css.minify"> <echo message="Creando directorio temporal ${minify.dir} (si no existe aún)..." /> <mkdir dir="${minify.dir}" /> <echo message="Borrando versión anterior de la carpeta temporal ${minify.dir}/css-min/..." /> <delete dir="${minify.dir}/css-min/" /> <echo message="Creando carpeta temporal ${minify.dir}/css-min/..." /> <mkdir dir="${minify.dir}/css-min/" /> <echo message="Copiando estructura de ${web.dir}/resources/styles/ en carpeta temporal..." /> <copy todir="${minify.dir}/css-min/"> <fileset dir="${minify.sourcedir}/styles/"> <include name="**/*.*" /> </fileset> </copy> <echo message="Borrando los CSS copiados a la carpeta temporal..." /> <delete> <fileset dir="${minify.dir}/css-min/" > <include name="**/*.css"/> </fileset> </delete> <echo message="Comprimiendo!!!..." /> <apply executable="java" parallel="false" dest="${minify.dir}/css-min/"> <fileset dir="${minify.sourcedir}/styles/"> <include name="**/*.css"/> </fileset> <arg line="-jar"/> <arg path="${lib.dir}/yui_compressor/yuicompressor-2.4.7.jar"/> <arg line="--line-break 0"/> <arg line="--type css"/> <arg line="--charset ISO-8859-1"/> <arg line="--nomunge"/> <!-- <arg line="- -verbose"/> --> <srcfile /> <arg line="-o"/> <mapper type="glob" from="*.css" to="*.css"/> <targetfile /> </apply> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="js.minify"> <echo message="Creando directorio temporal ${minify.dir} (si no existe aún)..." /> <mkdir dir="${minify.dir}" /> <echo message="Borrando versión anterior de la carpeta temporal ${web.dir}/resources/js-min/..." /> <delete dir="${minify.dir}/js-min/" /> <echo message="Creando carpeta temporal ${web.dir}/resources/js-min/..." /> <mkdir dir="${minify.dir}/js-min/" /> <echo message="Copiando estructura de ${web.dir}/resources/scripts/ en carpeta temporal..." /> <copy todir="${minify.dir}/js-min/"> <fileset dir="${minify.sourcedir}/scripts/"> <include name="**/*.*" /> </fileset> </copy> <echo message="Borrando los JS copiados a la carpeta temporal..." /> <delete> <fileset dir="${minify.dir}/js-min/" > <include name="**/*.js"/> </fileset> </delete> <echo message="Comprimiendo!!!..." /> <apply executable="java" parallel="false" dest="${minify.dir}/js-min/"> <fileset dir="${minify.sourcedir}/scripts"> <include name="**/*.js"/> </fileset> <arg line="-jar"/> <arg path="${lib.dir}/yui_compressor/yuicompressor-2.4.7.jar"/> <arg line="--line-break 0"/> <arg line="--type js"/> <arg line="--charset ISO-8859-1"/> <arg line="--nomunge"/> <!--<arg line="- -verbose"/>--> <srcfile /> <arg line="-o"/> <mapper type="glob" from="*.js" to="*.js"/> <targetfile /> </apply> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="js.minified.subir" depends="checkTomcatHome" if="local.tomcathome.exists"> <echo message="El servidor Tomcat destino existe, copiando archivos 'encogidos' a ${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/scripts..." /> <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/scripts" overwrite="yes"> <fileset dir="${minify.dir}/js-min/"> <include name="**/*.*" /> </fileset> </copy> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="css.minified.subir" depends="checkTomcatHome" if="local.tomcathome.exists"> <echo message="El servidor Tomcat destino existe, copiando archivos 'encogidos' a ${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/styles..." /> <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/styles" overwrite="yes"> <fileset dir="${minify.dir}/css-min/"> <include name="**/*.*" /> </fileset> </copy> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="css.minified.process"> <echo message="Reduciendo el tamaño de los archivos CSS..." /> <antcall target="css.minify" /> <echo message="Cargando los archivos CSS..." /> <antcall target="css.minified.subir" /> <echo message="Borrando la carpeta temporal..." /> <delete dir="${minify.dir}" /> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> <target name="js.minified.process"> <echo message="Reduciendo el tamaño de los archivos JS..." /> <antcall target="js.minify" /> <echo message="Cargando los archivos JS..." /> <antcall target="js.minified.subir" /> <echo message="Borrando la carpeta temporal..." /> <delete dir="${minify.dir}" /> </target> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> </project> 
+5
source

You can also batch minify using Node.js. . However, this option is for Linux users only (for now).

Every time a software package is terribly deprived of convenience (Eclipse) or the linker package format is just crazy (ANT), someone smart comes and creates something amazing.

In this case

which is awesome.

Just thought I updated this question and add an answer.

0
source

You can select and "collect" js / css resources by configuring and adding the External Tool using the package (for Windows users).

Step 1: Add "yuicompressor" and "minify.bat" (see below) to your project.

enter image description here

Step 2: Configure an external tool with the name "Minify" ("Run" → "External Tools" → "Configurations of External Tools").

enter image description here enter image description here enter image description here

Step 3: Select the resources (js / css) or the directory that contains them, and click "Minify". Js / css files will be deployed in the single-level min directory.

enter image description here

(Minify.bat)

 @echo off set target=%1 set yui=%2\WebContent\build\yuicompressor\yuicompressor-2.4.8.jar :: %1 selected resource :: %2 current project :: dir if exist %target%\ ( cd /d %target% mkdir min 2>nul for %%f in (*.js *.css) do ( echo Minifying "%%~ff" java -jar %yui% %%f -o min\%%f ) goto end ) :: .js/.css set pathNoExt=0 for /f %%i in ('dir /b %target%') do set pathNoExt=%%~ni if not %pathNoExt%==0 ( cd /d %~dp1 mkdir min 2>nul for /f %%f in ('dir /b %pathNoExt%.js %pathNoExt%.css') do ( echo Minifying "%%~ff" java -jar %yui% %%f -o min\%%f ) ) :end echo Minified 
0
source

Source: https://habr.com/ru/post/1396418/


All Articles