z-boss
z-boss

Reputation: 17608

How to automate JavaScript files compression with YUI Compressor?

YUI Compressor does not accept wildcard parameters, so I cannot run it like this:

C:>java -jar yuicompressor.jar *.js

But I have over 500 files and would rather not have to create a batch file like this:

C:>java -jar yuicompressor.jar file1.js -o deploy\file1.js
C:>java -jar yuicompressor.jar file2.js -o deploy\file2.js
...
C:>java -jar yuicompressor.jar file500.js -o deploy\file500.js

And of course my file names are not in such uniform way.

Is there way to automate this without writing any code? :)

Upvotes: 13

Views: 8320

Answers (6)

hazerd
hazerd

Reputation: 592

YUI compressor now supports wildcards, starting from version 2.4.4. You can get the latest version here or from YUI Git Hub.

Upvotes: 5

Olaf Kock
Olaf Kock

Reputation: 48057

If you are geared towards Java, you can also use Ant for conversion. I've found a blog entry about an Ant Taks for the YUI Compressor. Disclaimer: Never tried it - sorry

Upvotes: 5

Michael Burr
Michael Burr

Reputation: 340218

I might go for a makefile (I think it would probably be more maintainable long term), but if you want a quick-n-dirty Windows batch command something like the following should work:

for %%a in (*.js) do @java -jar yuicompressor.jar "%%a" -o "deploy\%%a"

Upvotes: 12

foxxtrot
foxxtrot

Reputation: 11402

I should mention that using GNU Make, I have the following rule:

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

Upvotes: 4

Niniki
Niniki

Reputation: 810

And for unix or cygwin you can use xargs or something like:

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

Pipe that to /bin/sh when you're happy with the command line to execute it.

Upvotes: 2

foxxtrot
foxxtrot

Reputation: 11402

You'll need to use some sort of a script to get a list of all the .js files, and then runs the YUI Compressor on all of them. On the windows command prompt, something like this should work:

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

Upvotes: 1

Related Questions