O'Reilly logo

Closure: The Definitive Guide by Michael Bolin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 14. Inside the Compiler

As demonstrated in the previous chapter, the Closure Compiler is a tremendous tool, but it turns out that it has even more to offer if you are willing to take a peek at the source code. For starters, there are additional optimizations and checks that you can enable if you use the Compiler via its programmatic API, as explained in the section Hidden Options. Then in Example: Extending CommandLineRunner, you will learn how to create your own Compiler executable that will run exactly the compiler passes that you want. Finally, you will explore the Compiler’s internal representation of a JavaScript program in Example: Visualizing the AST Using DOT, before creating your own compiler passes in Example: Creating a Compiler Check and Example: Creating a Compiler Optimization. But before diving into any of those things, we will take a tour of the codebase of the Closure Compiler.

Tour of the Codebase

Chapter 12 provided a simple example of using the Closure Compiler via its programmatic API. This section will examine the classes from the com.google.javascript.jscomp package used in that example, as well as some others that will be necessary to follow the code samples that appear later in this chapter.

Getting and Building the Compiler

Although it is possible to explore the code by visiting http://code.google.com/p/closure-compiler/source/browse/, it will be much easier to poke around and experiment with the code if you have a local copy of the repository on your ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required