minify.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. var injector = require('../lib/connect-injector');
  2. var connect = require('connect');
  3. var UglifyJS = require('uglify-js');
  4. // Cache for already uglified files
  5. var cache = {};
  6. // Function that uglifies JavaScript code
  7. var uglify = function (code) {
  8. var toplevel = UglifyJS.parse(code);
  9. toplevel.figure_out_scope();
  10. var compressor = UglifyJS.Compressor({
  11. warnings: false
  12. });
  13. var compressed = toplevel.transform(compressor);
  14. compressed.figure_out_scope();
  15. compressed.compute_char_frequency();
  16. compressed.mangle_names();
  17. return compressed.print_to_string();
  18. };
  19. var inject = injector(function(req, res) {
  20. return res.getHeader('content-type').indexOf('application/javascript') !== -1;
  21. }, function(data, req, res, callback) {
  22. // Check the cache, uglify the code if not and add it
  23. if(!cache[req.url]) {
  24. cache[req.url] = uglify(data.toString());
  25. }
  26. callback(null, cache[req.url]);
  27. });
  28. // inject needs to be used before any middleware that writes to the response
  29. connect().use(inject).use(connect.static(__dirname + '/../test')).listen(8080);