The Closure Compiler is a tool that attempts to compress and optimize JavaScript code, at the expense of
human readability. Unlike an actual
compiler, it does not compile from JavaScript to
machine code but rather minifies JavaScript. The process executes the following steps: • Parses the submitted JavaScript • Analyzes the JavaScript •
Removes any dead code • Rewrites and
minifies what is left It also checks
syntax,
variable references, and
types and warns about
common JavaScript pitfalls. It supports
transpiling modern
ECMAScript code to ECMAScript 5 to achieve a wider range of
browser compatibility, similar to
Babel. This obviated Traceur Compiler, another project that supported transpiling ES6 to ES3. The Closure compiler also supports
type checking via
JSDoc type annotations.
CLI The Closure Compiler is available for use through
command line tools: •
Java-based application run from the shell which compiles a list of specified JavaScript files •
npm package google-closure-compiler which provides three compilers: native binary executable (via
GraalVM), Java and a JavaScript-based one
Closure Compiler Service The Closure Compiler Service application provides a form for a user to input a URL pointing to a JavaScript source or enter JavaScript source code in a text box. The website will display the compiled JavaScript on the right side for the user to copy. '
An API is available, accessible via POST
requests, parameters include:' • The JavaScript to be optimized, or a URL pointing to it • Optimization level • Emit errors and warnings • Output format i.e. JSON, XML, or text The service is marked as deprecated and will eventually be removed.
Ecosystem Programming languages that transpile to JavaScript can use the Closure Compiler in their toolchain. For example, the Closure Compiler is used in
ClojureScript to optimize the compiled JavaScript.
Internals Closure Compiler is built upon a modified version of the
Rhino JS engine built by Mozilla,
Google Guava, a Java standard library,
Protocol Buffers, Gson and various other tools for testing. It also ships with built-in JavaScript
JSDoc annotations for various popular projects like Node.js' standard API library, JQuery, and Google Map APIs. ==Closure Library==