Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/documentcloud/closure-compiler
A Ruby Wrapper for the Google Closure Compiler
https://github.com/documentcloud/closure-compiler
Last synced: 5 days ago
JSON representation
A Ruby Wrapper for the Google Closure Compiler
- Host: GitHub
- URL: https://github.com/documentcloud/closure-compiler
- Owner: documentcloud
- License: other
- Created: 2009-11-18T05:11:23.000Z (almost 15 years ago)
- Default Branch: master
- Last Pushed: 2021-12-25T09:34:19.000Z (almost 3 years ago)
- Last Synced: 2024-10-04T22:35:47.612Z (about 1 month ago)
- Language: Ruby
- Homepage: http://github.com/documentcloud/closure-compiler
- Size: 80.9 MB
- Stars: 203
- Watchers: 8
- Forks: 53
- Open Issues: 18
-
Metadata Files:
- Readme: README.textile
- License: COPYING
Awesome Lists containing this project
README
h1. The Closure Compiler (as a Ruby Gem)
The *closure-compiler* gem is a svelte wrapper around the "Google Closure Compiler":https://developers.google.com/closure/compiler/ for JavaScript compression.
Latest Version: *"1.1.14":https://rubygems.org/gems/closure-compiler*
The Closure Compiler's *2018-05-06* JAR-file is included with the gem.
h2. Installation
sudo gem install closure-compilerh2. Usage
The @Closure::Compiler@ has a @compile@ method, which can be passed a string or an open @IO@ object, and returns the compiled JavaScript. The result is returned as a string, or, if a block is passed, yields as an @IO@ object for streaming writes.
require 'rubygems'
require 'closure-compiler'
Closure::Compiler.new.compile(File.open('underscore.js', 'r'))=> "(function(){var j=this,m=j._;function i(a){......
The @Closure::Compiler@ also has @compile_file@ and @compile_files@ methods, which can be passed a file path or an array of file paths respectively. The files are concatenated and compiled and, like the @compile@ method, the result is returned as a string or, if block is passed, yields an @IO@ object.
require 'rubygems'
require 'closure-compiler'
Closure::Compiler.new.compile_files(['underscore.js', 'jasmine.js']))=> "(function(){var j=this,m=j._;function i(a){......
When creating a @Closure::Compiler@, you can pass "any options that the command-line compiler accepts":https://developers.google.com/closure/compiler/docs/gettingstarted_app to the initializer and they'll be forwarded. For example, to raise the compilation level up a notch:
closure = Closure::Compiler.new(:compilation_level => 'ADVANCED_OPTIMIZATIONS')
closure.compile(File.open('underscore.js', 'r'))=> "(function(){var j=this,m=j.h;function i(a){......
The default values of all the compiler flags are identical to the command-line version. The default *compilation_level* is "SIMPLE_OPTIMIZATIONS".
A @Closure::Error@ exception will be raised, explaining the JavaScript syntax error, if compilation fails for any reason.
h2. YUI Compressor Compatibility
Effort has been made to make the "closure-compiler" gem a drop-in alternative to the "ruby-yui-compressor". To that end, @Closure::Compiler#compile@ has been aliased as @compress@, and can take the same string or IO argument that a @YUI::JavaScriptCompressor#compress@ can. In addition, the @Closure::Compiler@ initializer can take @java@ and @jar_file@ options, overriding the location of the Java command and the Closure Compiler JAR file, respectively.
compiler = Closure::Compiler.new(
:java => '/usr/local/bin/java16',
:jar_file => '/usr/src/closure/build/latest.jar'
)