14 Aug 2008 12:47 AM #1
14 Aug 2008 12:55 AM #2
19 Dec 2008 7:34 AM #3
19 Dec 2008 10:56 AM #4
I'm currently using the following tools for my build process:
Using high-ASCII compression, I can get ext-all.js and ext-base.js down to under 300k!
CSS: csstidy (http://csstidy.sourceforge.net/) + yuicompressor (http://developer.yahoo.com/yui/compressor/)
Csstidy optimizes such things as colors, borders, combines selectors etc. to reduce token count, then it is processed with YUI to remove comments and whitespace.
Images: SmartSprites (http://smartsprites.osinski.name/)
Easily allows you to create sprites without destruction of original CSS source. Great for making sprites out of CSS background-images. I'm going to investigate using it to reduce the number of images in ext themes.
For allowing the tools to work together I am using Apache Ant as part of my build processes (some of the tools, like yui, smartsprites natively support Ant via custom tasks). Once you learn Ant, you will really appreciate its power and versatility. For example, I just added the ability to output Build numbers and information in my "compiled" source files in under 10 minutes.
I am also preprocessing my files with m4, a general purpose text preprocessor (like cpp). This allows me to concatenate files appropriately (before sending them through the tool-chain), based upon statements in the file and can be switched to different build targets (such as debug, candidate, release, production, etc.). I tried using cpp at first but it doesn't work gracefully with CSS due to namespace conflicts in some directives.
I got a lot of these ideas researching over the past month what other people are currently doing. In particular, Julien Lecomte's blog was the first inspiration. You should check it out for an overall process to get started, he has some nice Ant examples as well:
If anyone has any other ideas or tools I'd love to hear about them. I did take a look at http://www.rockstarapps.com/pmwiki/p...?n=JsLex.JsLex but ultimately needed something a little more flexible with the ability to swap out tools as needed, so I opted to create my own Ant "make" files. At this point the only thing that's missing from my setup is testing integration (jsunit) and documentation generation from source (ext doc generator?).