
Closure Compiler: High-level overview of a compilation job - breck
http://closuretools.blogspot.com/2016/03/high-level-overview-of-compilation-job.html
======
dvcrn
The closure compiler is one of these engineering secrets that I wish more
people knew about. The advanced compilation with dead code elimination [0] is
insane. It needs a bit of extra work on top to fully utilise but you get a
payoff that you can't achieve with other minifiers.

[0]: [https://developers.google.com/closure/compiler/docs/api-
tuto...](https://developers.google.com/closure/compiler/docs/api-tutorial3)

~~~
happyslobro
Clojurescript is what introduced me to the Closure compiler. It killed three
birds with one stone: it unbloated the client build, saved me from writing
validation logic twice in two different languages, and I can stop writing
JavaScript.

------
localvoid
There also an amazing tool[0] that processes TypeScript and adds JSDoc
annotations for closure compiler, so it can optimize way much better[1]

[0]: [https://github.com/angular/tsickle](https://github.com/angular/tsickle)

[1]: [https://github.com/google/closure-compiler/wiki/Type-
Based-P...](https://github.com/google/closure-compiler/wiki/Type-Based-
Property-Renaming)

~~~
malisper
How much of a speedup do you get by adding JSDoc type annotations?

~~~
localvoid
It depends on the code base. When I've migrated from js code base with 100%
gcc type coverage to TypeScript, gcc(without tsickle) in advanced mode stopped
rewriting many methods into simple functions, didn't minified many symbols,
with 100% type coverage gcc minified all symbols.

When I've tried synthetic UI benchmarks, code with 100% type coverage on
desktop machines had the same performance, on old mobile phones it was 0-10%
faster(depends on the use case).

Minified code size with 100% type coverage were slightly smaller on small
projects, but with the API for building UI Components that I've used, minified
code with 100% type coverage should be significantly smaller on a large
project.

------
bhouston
It would be cool if this could be used with standard NPM modules in an easy
way.

~~~
skybrian
Would this work for you?

[https://www.npmjs.com/package/google-closure-
compiler](https://www.npmjs.com/package/google-closure-compiler)

~~~
Scarbutt
Didn't know it was used so much out of Google, that's a lot of downloads and
that just for NPM, I would guess maven and direct downloads are even bigger?
not counting clojurescript and scalajs which bundle closure in their compiler.

~~~
achen2345
Its not very many. My own package gets way more traffic than that months after
I pulled out of NPM.

[https://www.npmjs.com/package/prettydiff](https://www.npmjs.com/package/prettydiff)

~~~
Scarbutt
True, forgot how big the JS ecosystem is.

