diff --git a/Rakefile b/Rakefile index 6af14bb6d..2c085058a 100644 --- a/Rakefile +++ b/Rakefile @@ -1,9 +1,27 @@ require 'rubygems' require 'closure-compiler' - + desc "Use the Closure Compiler to compress Underscore.js" task :build do js = File.open('underscore.js', 'r') min = Closure::Compiler.new.compile(js) File.open('underscore-min.js', 'w') {|f| f.write(min) } -end \ No newline at end of file +end + +task :build_advanced do + js = File.read('underscore.js') + # remove wrapping anonymous function as this messes with closure compiler + # see + # http://groups.google.com/group/closure-compiler-discuss/browse_thread/thread/b59b54c1a0073aa5 + js.sub!('(function() {', '').chomp!("})();\n") + compiler = Closure::Compiler.new \ + :compilation_level => 'ADVANCED_OPTIMIZATIONS', + :formatting => 'PRETTY_PRINT' + min = compiler.compile(js) + File.open('underscore-min2.js', 'w') {|f| f.write(min) } + # + original_size = js.length + minimized_size = min.length + puts original_size, minimized_size +end + diff --git a/underscore.js b/underscore.js index 5e0297322..696b63f4e 100644 --- a/underscore.js +++ b/underscore.js @@ -25,8 +25,9 @@ var breaker = typeof StopIteration !== 'undefined' ? StopIteration : '__break__'; // Create a safe reference to the Underscore object for reference below. - var _ = root._ = function(obj) { return new wrapper(obj); }; - + var _ = function(obj) { return new wrapper(obj); }; + root._ = _; + // Export the Underscore object for CommonJS. if (typeof exports !== 'undefined') exports._ = _;