Assets minify and compressor for JS/CSS files using YUI compressor
This supports files from external sources. In my case, I use a CDN to serve the files and none of the existing extension were good for my case.
How to use
Extract the files to protected/extension/compressor (or whatever path you want)
Then in your config define the class of clientScript component to use CompressorClientScript
return array( //... 'components'=>array( 'class'=>'ext.compressor.CompressorClientScript',//use whatever location you put the extension //the following options are optional and the values defined in this example are the default ones 'compress'=>true,//wheter to minify and compress the files. Defaults to true //see YUICompressor class for more details 'compressorOptions'=>array( //Insert a line breaks after '}' characters for css files or //Insert a line break after the specified column number for js files 'linebreak'=>false, //Display informational messages and warnings. (useful for cleaning up your JS) 'verbose'=>false, //Minify only, no symbol obfuscation. Valid for js files 'nomunge'=>false, //Preserve unnecessary semicolons (such as right before a '}'). Valid for js files 'semi'=>false, //Disable all the built-in micro optimizations. Valid for js files 'nooptimize'=>false, //path to the java binary //you can use, for example, 'C:\Program Files (x86)\Java\jre7\bin\java.exe' if you are windows 'javaBin'=>'java', ), ), );
How to clear the cache?
Just clean up protected/runtime/compressor folder and it will recreate the files
How does it work?
It uses file_get_contents to get the files, so it can be either on your machine or load from external sources
It creates a compressed file in protected/runtime/compress for each page and then publishes it using assetsManager component
For css files, it rewrites the css url's
Uses a modified version of https://github.com/gpbmike/PHP-YUI-Compressor for compression adapted to Yii
Uses a modified version of https://github.com/mrclay/minify/ to rewrite css urls adapted to Yii