aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMihai Bazon <mihai@bazon.net>2013-01-04 11:24:29 +0200
committerMihai Bazon <mihai@bazon.net>2013-01-04 11:25:13 +0200
commit130c623be74ea010b11222d43eb23a181d36cd8a (patch)
tree9fee27f4e9fcd0ccb0598d71602548dc1239db8e
parent47c9895d591f2b83259302416663cd0ed44b26eb (diff)
downloadtracifyjs-130c623be74ea010b11222d43eb23a181d36cd8a.tar.gz
tracifyjs-130c623be74ea010b11222d43eb23a181d36cd8a.zip
Support `output`, `mangle` and `compress` options to `UglifyJS.minify`.
Close #57 Close #86 Close #33
-rw-r--r--README.md13
-rw-r--r--tools/node.js29
2 files changed, 33 insertions, 9 deletions
diff --git a/README.md b/README.md
index 20676bd5..802ea1c1 100644
--- a/README.md
+++ b/README.md
@@ -214,6 +214,7 @@ will evaluate references to them to the value itself and drop unreachable
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
@@ -367,9 +368,19 @@ no sense otherwise).
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!
@@ -517,3 +528,5 @@ The `source_map_options` (optional) can contain the following properties:
[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
diff --git a/tools/node.js b/tools/node.js
index be3cd93d..cf87628d 100644
--- a/tools/node.js
+++ b/tools/node.js
@@ -56,6 +56,9 @@ exports.minify = function(files, options) {
inSourceMap : null,
fromString : false,
warnings : false,
+ mangle : {},
+ output : null,
+ compress : {}
});
if (typeof files == "string")
files = [ files ];
@@ -73,16 +76,20 @@ exports.minify = function(files, options) {
});
// 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;
@@ -95,7 +102,11 @@ exports.minify = function(files, options) {
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 + "",