Pass options like -c hoist_vars=false,if_return=false. \
Use -c with no argument to use the default compression options.")
.describe("d", "Global definitions")
+ .describe("e", "Embed everything in a big function, with a configurable parameter/argument list.")
.describe("comments", "Preserve copyright comments in the output. \
By default this works like Google Closure, keeping JSDoc-style comments that contain \"@license\" or \"@preserve\". \
.alias("d", "define")
.alias("r", "reserved")
.alias("V", "version")
+ .alias("e", "enclose")
.string("source-map")
.string("source-map-root")
.string("m")
.string("c")
.string("d")
+ .string("e")
.string("comments")
.string("wrap")
.boolean("screw-ie")
TOPLEVEL = TOPLEVEL.wrap_commonjs(ARGS.wrap, ARGS.export_all);
}
+if (ARGS.enclose) {
+ var arg_parameter_list = ARGS.enclose;
+
+ if (!(arg_parameter_list instanceof Array)) {
+ arg_parameter_list = [arg_parameter_list];
+ }
+
+ TOPLEVEL = TOPLEVEL.wrap_enclose(arg_parameter_list);
+}
+
var SCOPE_IS_NEEDED = COMPRESS || MANGLE || ARGS.lint;
if (SCOPE_IS_NEEDED) {
$propdoc: {
globals: "[Object/S] a map of name -> SymbolDef for all undeclared names",
},
+ wrap_enclose: function(arg_parameter_pairs) {
+ var self = this;
+ var args = [];
+ var parameters = [];
+
+ arg_parameter_pairs.forEach(function(pair) {
+ var split = pair.split(":");
+
+ args.push(split[0]);
+ parameters.push(split[1]);
+ });
+
+ var wrapped_tl = "(function(" + parameters.join(",") + "){ '$ORIG'; })(" + args.join(",") + ")";
+ wrapped_tl = parse(wrapped_tl);
+ wrapped_tl = wrapped_tl.transform(new TreeTransformer(function before(node){
+ if (node instanceof AST_Directive && node.value == "$ORIG") {
+ return MAP.splice(self.body);
+ }
+ }));
+ return wrapped_tl;
+ },
wrap_commonjs: function(name, export_all) {
var self = this;
var to_export = [];