| 123456789101112131415161718192021222324252627282930313233343536 |
- var injector = require('../lib/connect-injector');
- var connect = require('connect');
- var UglifyJS = require('uglify-js');
- // Cache for already uglified files
- var cache = {};
- // Function that uglifies JavaScript code
- var uglify = function (code) {
- var toplevel = UglifyJS.parse(code);
- toplevel.figure_out_scope();
- var compressor = UglifyJS.Compressor({
- warnings: false
- });
- var compressed = toplevel.transform(compressor);
- compressed.figure_out_scope();
- compressed.compute_char_frequency();
- compressed.mangle_names();
- return compressed.print_to_string();
- };
- var inject = injector(function(req, res) {
- return res.getHeader('content-type').indexOf('application/javascript') !== -1;
- }, function(data, req, res, callback) {
- // Check the cache, uglify the code if not and add it
- if(!cache[req.url]) {
- cache[req.url] = uglify(data.toString());
- }
- callback(null, cache[req.url]);
- });
- // inject needs to be used before any middleware that writes to the response
- connect().use(inject).use(connect.static(__dirname + '/../test')).listen(8080);
|