Path: | README.rdoc |
Last Update: | Fri Apr 06 17:08:53 +0000 2012 |
Ruby wrapper for UglifyJS JavaScript compressor.
Uglifier is available as ruby gem.
$ gem install uglifier
Ensure that your environment has a JavaScript interpreter supported by ExecJS. Usually, installing therubyracer gem is the best alternative.
require 'uglifier' Uglifier.new.compile(File.read("source.js")) # => js file minified # Or alternatively Uglifier.compile(File.read("source.js"))
When initializing UglifyJS, you can tune the behavior of UglifyJS by passing options. For example, if you want top-level variable names to be mangled:
Uglifier.new(:toplevel => true).compile(source) # Or Uglifier.compile(source, :toplevel => true)
Available options and their defaults are
{ :mangle => true, # Mangle variable and function names, use :variables to skip function mangling :toplevel => false, # Mangle top-level variable names :except => [], # Variable names to be excluded from mangling :max_line_length => 32 * 1024, # Maximum line length :squeeze => true, # Squeeze code resulting in smaller, but less-readable code :seqs => true, # Reduce consecutive statements in blocks into single statement :dead_code => true, # Remove dead code (e.g. after return) :lift_vars => false, # Lift all var declarations at the start of the scope :unsafe => false, # Optimizations known to be unsafe in some situations :copyright => true, # Show copyright message :ascii_only => false, # Encode non-ASCII characters as Unicode code points :inline_script => false, # Escape </script :quote_keys => false, # Quote keys in object literals :beautify => false, # Ouput indented code :beautify_options => { :indent_level => 4, :indent_start => 0, :space_colon => false } }
Uglifier uses the GitHub issue tracker to track bugs and features. Before submitting a bug report or feature request, check to make sure it hasn‘t already been submitted. You can indicate support for an existing issuse by voting it up. When submitting a bug report, please include a Gist that includes a stack trace and any details that may be necessary to reproduce the bug, including your gem version, Ruby version, MultiJSON engine and ExecJS runtime. Ideally, a bug report should include a pull request with failing specs.