Script de compilacion con CLOSURE COMPILER

21 views
Skip to first unread message

@soyjavi

unread,
Jun 13, 2011, 2:11:12 AM6/13/11
to JS Meetup Bilbao
Buenas,

Siento no estar todo lo activo que me gustaría en el grupo, pero llevo
unas semanas hasta arriba de trabajo y eventos. Os comento que es lo
que quiero hacer; trabajo con OSX y ahora me he puesto a investigar
Closure Compiler. Bien, si abro el terminal y hago el "java -jar ..."
de múltiples archivos funciona perfecto (salvando los errores de
compilación) .. el caso es que me gustaría generar un script que haga
varias compilaciones por mi proyecto, por ejemplo tengo varios
directorios

[APP]
- app.js
- events.js
- data.js
- services.js
- ...
[COFFEE]
- coffee.0610.js
- fire.js
- [THIRDS]
- zepto.js
- jquery.js
- [SUGARS]
- sugar.growl.js
- sugar.gps.js

Y me gustaría lanzar un script desde la raiz que me dejase esto:
app.js (que incluya todos los scripts de [APP]
coffee.js (que incluya coffee.0610.js, fire.js)
thirds.js (que incluya todos los scripts de [THIRDS]
sugars.js (que incluya todos los scripts de [SUGARS])

Mi ignorancia es absoluta en "applescript" y me gustaría saber si hay
algun mecanismo en el que no tenga que ir lanzando en el terminal los
"java -jar ..." manualmente.

Muchisimas gracias :)

Raúl Rodríguez

unread,
Jun 14, 2011, 8:10:31 AM6/14/11
to JS Meetup Bilbao
Hola Javi,

Yo tampoco tengo ni idea de applescript, pero para lo que quieres
hacer tampoco lo necesitas. En macosx puedes crear un script de shell
que ejecute todos los comandos "java -jar ..." que requiera tu
compilación.

En la primera línea del script tienes que poner #!/bin/sh, seguido
añade tus comandos y acuérdate de darle permisos de ejecución. No
tengo Mac para probarlo, así que tampoco te voy a prometer que
funcione, pero debería ;)

Un saludo.

@soyjavi

unread,
Jun 15, 2011, 2:47:03 AM6/15/11
to JS Meetup Bilbao
Creo que no me llegué a explicar... crear un .sh lo tengo claro. Lo
que me gustaría es que la compilación fuese dinámica, esto es:
- Dependiendo de los ficheros que tengo dentro de la carpeta me
genere un unico JS con el nombre de la carpeta

¿Se me entiende?

:)

David Santamaria

unread,
Jun 15, 2011, 3:26:30 AM6/15/11
to jsmeetu...@googlegroups.com
Hola Javi,
Dale un vistazo a Closure Library (de Google Labs, ultimamente me
encuentro cada joya en los labs de Google).
http://code.google.com/closure/library/index.html

En concreto quizas te resulte interesante esto su script para
dependencias (creo que tiene opciones para unificar varios ficheros,
compilacion de todos y demas, esta pensado para ser usado con closure
compiler).
http://code.google.com/closure/library/docs/closurebuilder.html

Nos comentas que tal la experiencia,
Un saludo.

El día 15 de junio de 2011 08:47, @soyjavi
<javi.jime...@gmail.com> escribió:

--
David.

Raúl Rodríguez

unread,
Jun 15, 2011, 5:28:18 AM6/15/11
to JS Meetup Bilbao
On Jun 15, 8:47 am, "@soyjavi" <javi.jimenez.vil...@gmail.com> wrote:
> Creo que no me llegué a explicar... crear un .sh lo tengo claro. Lo
> que me gustaría es que la compilación fuese dinámica, esto es:
>   - Dependiendo de los ficheros que tengo dentro de la carpeta me
> genere un unico JS con el nombre de la carpeta
>
> ¿Se me entiende?
>
> :)
>

Sorry, no te entendí.

Pero dándole una vuelta de tuerca al script sh para que sea dinámico
puedes hacer algo así:

#!/bin/sh

CLOSURE_PATH="./compiler.jar"

compile_dir() {
DIR="${1}"
ARGS=""
OUTPUT="`echo "${DIR}"|sed 's/^.*\/\([^\/]\+\)$/\1/'`.js"
TMP_JS="/tmp/js_files.tmp.$$"
find "${DIR}" -maxdepth 1 -name "*.js" -type f > "${TMP_JS}"
while read line
do
ARGS="${ARGS} --js=${line}"
done < "${TMP_JS}"
rm "${TMP_JS}"

if [ x"${ARGS}" != x ]
then
ARGS="${ARGS} --js_output_file=${OUTPUT}"
CMD="java -jar ${CLOSURE_PATH} ${ARGS}"
echo "${CMD}"
`${CMD}`
fi
}

TMP_DIRS="/tmp/compile_dirs.tmp.$$"
find . -type d > "${TMP_DIRS}"
while read line
do
if [ "${line}" != "." ]
then
compile_dir "${line}"
fi
done < "${TMP_DIRS}"
rm "${TMP_DIRS}"

De todas formas el ClosureBuilder que ha pasado David tiene muy buena
pinta, yo usaría eso.

@soyjavi

unread,
Jun 16, 2011, 4:21:35 AM6/16/11
to JS Meetup Bilbao
Muchísimas gracias a los dos!!

Voy a probar ambas alternativas y os comentaré los resultados.

Un saludo y mil closures :)
Reply all
Reply to author
Forward
0 new messages