I'd like to introduce the Zazl AMD Optimizer that is available at
https://github.com/zazl/optimizer.
There is a Getting Started Wiki that can be found at
https://github.com/zazl/optimizer/wiki/Getting-Started-with-the-AMD-Optimizer
The goal of this AMD loader/optimizer is to enable developers to
produced optimized (concatenated and compressed) AMD based
applications without having to resort to static build tools. This
does require some form of server-side support above and beyond
static resource loading.
Here are some highlighted features :
- It provides its own AMD compliant loader (passes all the
current tests) that enables caching of i18n and text plugin
output
- Server-side support is available via either Java/Servlets or a
Node.js http handler
- The analysis of the code and optimization is performed on
demand at runtime via the server-side component.
- AST Parsing is used to obtain dependency data (Uglify-js AST
parser used in Node.js version, either Uglify-js AST parser or
esprima used in Java version).
- Supports expiration based caching (Java only) and validation
based caching.
- Server side caching is used whenever possible. That includes
caching of resources and also the generated analyisis data.
- Code modifications are picked up dynamically without having
the restart the server.
- JavaScript compression
- Node.js based compression is supported via Uglify-js. (Note:
using compression substantially slows down the initial
request).
- Java based compression is supported via Dojo Shrinksafe
although optionally Closure support is possible.
- Gzip compression of the response when the HTTP headers
indicate support.
- Dynamically referenced modules (that is modules loaded via
"require" calls) are loaded, along with their dependencies) via
script injection.
If you have Node.js (> v0.6) available the easiest way to try
it is to install via npm.
npm install zazloptimizer
More details can be found at https://github.com/zazl/optimizer/wiki/Using-the-NodeJS-Zazl-Optimizer
Richard