The big boys in the framework wold all have some ways of managing your assets - CSS and JS files with proper merging, cache busters, minification and all jazz. Kohana 3 on the other hand - has only some modest efforts. None of them have all the features that seems to be present elsewhere. And I don’t really have an explanation why - those are generally well known requirements for production sites. Anyway I was fed up with this state of affairs and I decided to just write my own solution. Here’s what my dream asset manager thing must do:
- Merge arbitrary number of CSS and JS files into one file respectfully.
- Different behavior in different environments - keep separate files in development and merge in production
- Ease implementation of JS and CSS related languages - SASS, LESS, CofeeScript etc.
- Minify all the files, but have the ability to chose exceptions
- Ability to add small code snippets in between files so when they are merged in one big file it remains in the proper load placement.
- Bonus points for easy API.
So I set of to implement all of this and more - and here is the fruit of a full day’s work - The Asset-Merger. Installation instructions
The documentation is quite adequate I think, and will get you up to speed, but here are just a few highlights
1 2 3 4 5 6 7 8 9 10 11 12
That’s right - Engines! Just how the big boys are doing it. You can even chain them for proper power effect.
It will get that you are including external files and it’s not a very good practice to download and inline them (they are placed remotely for a reason). So they just appear as proper
This will output a nice inline
And here’s a great simple touch that I haven’t seen anywhere else before but find immensely satisfying - you can do a
1 2 3 4 5 6
And see the result of your hard labor. I know you can probably switch the environment, and that’s probably better anyway, but to have a quick check if everything works correctly when its put together is quite nice.
Now, asset-merger utilizes
filemtime checks to see if it needs to recompile the files, which might be a bit costly in a production environment. But you can always cache this part as a Kohana Fragment and live happy.
1 2 3 4 5 6 7
You can cache the hell out of it because you will probably clear your cache on deploy anyway.
I will be working on adding CDN support shortly.