So today I am going to show you how to use jcmin A util that I wrote for myself. Lets consider what problems I faced before I decided to write this.
Most of the things you can do yourself if you are sticking with either of Google Closure or YUI compressor. I wrote this util so that I can switch between these beautiful compilers without any brain work. Both these compilers have their own positives and negatives. But if you operate these compilers at basic levels then there is not much difference between the two, and jcmin operate at that level.
The problems that I faced are listed below
- What if I have a directory which is full of JS files and then subdirectories with more JS files. How do I minimize all those at once.
- How do I minimize JS and CSS under a Directory with one command.
- What If java is not available? off course I could have used online compressor but compressing 10s of files one by one is such a pain, and manageability becomes nightmare at least the way my project is setup. You could be smarter and use other tools
- and so on…
I know that you may not agree using a wrapper but Its Ok. I am sharing what I’ve got so bad reviews or no acceptance doesn’t bother me. My motto is “Anything for a better world” It could be a crap solution but it works for me
Lets explore this util with Problem solution scenarios
Below is the directory structure I will be working on
File sizes are shown below
Now lets do a jcmin magic
I run the following command from my windows command prompt
So the process what successful but what does resulting c:\doutput folder looks like is shown below
So the result is an equivalent directory structure and .min added to all files and the files has been minimized. The overall size now is just over 56 KB.
The above is using Google Closure compiler now lets use YUI compressor. The results are shown below
As you see that I’ve used -dnam switch which means that program should not add “.min” to the output file names. As you can also see that the difference between sizes are not that great because this util work at safe levels. Only difference I can see is that YUI is a bit faster than Google Closure. I could be wrong but that the results of my tests.
Problem 2: I’ve uninstalled JRE and also I would like to skip all files that has words `forms` and `main` in their names
Ok so let me tell you a good thing about jcmin. It ships with IKVM which is a java runtime written in .NET thus even if JRE is not available this util will switch to fallback JRE which is IKVM. Read more about IKVM here
Ok so when I run above commands I see no difference they execute the way above screenshot tell you. But lets now explore how to exclude certain files not to be compressed and shouldn’t end up in output at all.
Going with above file structure which is from c:\demo directory the command below will exclude _ajforms.js and main.css from being compressed.
One thing I would like you to be aware of is that if Google Closure or YUI compressor throws any error you will see it right before your eyes. Errors are not suppressed at all below is an example. I intentionally removed closing bracket in one of the ruleset in my screen.css file below is what I get when I try to minimize that file.
YUI is very friendly so it will not raise any issues as such many times. But Google Closure is very sensitive and below is output to show how it complains
Depending on what sort of feedback I get I’ll add more to this post later. And off course I will add more features to this tool if I get good response.