code as usual. The possible downside of this approach is that the build
will contain the `const` declarations.
+<a name="codegen-options"></a>
## Beautifier options
The code generator tries to output shortest code possible by default. In
Other options:
- `warnings` (default `false`) — pass `true` to display compressor warnings.
+
- `fromString` (default `false`) — if you pass `true` then you can pass
JavaScript source code, rather than file names.
+- `mangle` — pass `false` to skip mangling names.
+
+- `output` (default `null`) — pass an object if you wish to specify
+ additional [output options][codegen]. The defaults are optimized
+ for best compression.
+
+- `compress` (default `{}`) — pass `false` to skip compressing entirely.
+ Pass an object to specify custom [compressor options][compressor].
+
We could add more options to `UglifyJS.minify` — if you need additional
functionality please suggest!
[acorn]: https://github.com/marijnh/acorn
[source-map]: https://github.com/mozilla/source-map
[sm-spec]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit
+ [codegen]: http://lisperator.net/uglifyjs/codegen
+ [compressor]: http://lisperator.net/uglifyjs/compress
inSourceMap : null,
fromString : false,
warnings : false,
+ mangle : {},
+ output : null,
+ compress : {}
});
if (typeof files == "string")
files = [ files ];
});
// 2. compress
- toplevel.figure_out_scope();
- var sq = UglifyJS.Compressor({
- warnings: options.warnings,
- });
- toplevel = toplevel.transform(sq);
+ if (options.compress) {
+ var compress = { warnings: options.warnings };
+ UglifyJS.merge(compress, options.compress);
+ toplevel.figure_out_scope();
+ var sq = UglifyJS.Compressor(compress);
+ toplevel = toplevel.transform(sq);
+ }
// 3. mangle
- toplevel.figure_out_scope();
- toplevel.compute_char_frequency();
- toplevel.mangle_names();
+ if (options.mangle) {
+ toplevel.figure_out_scope();
+ toplevel.compute_char_frequency();
+ toplevel.mangle_names(options.mangle);
+ }
// 4. output
var map = null;
orig: inMap,
root: options.sourceRoot
});
- var stream = UglifyJS.OutputStream({ source_map: map });
+ var output = { source_map: map };
+ if (options.output) {
+ UglifyJS.merge(output, options.output);
+ }
+ var stream = UglifyJS.OutputStream(output);
toplevel.print(stream);
return {
code : stream + "",