UglifyJS 3
JavaScript parser, mangler, compressor, beautifier toolkit
.... A scope analyzer, which is a tool that augments the AST with information about where variables are defined/referenced etc. A tree walker, a simple API allowing you to do something on every node in the AST. A tree transformer, another API intended to transform the tree. All the above utilities and APIs are defined in ~6500 lines of code (except for the effective generation of the source-map, which is handled by the source-map module). Compared to alternatives, UglifyJS is pretty small.