1 | var _ = require('underscore'),
|
2 | uglify;
|
3 |
|
4 | try {
|
5 | uglify = require('uglify-js');
|
6 | } catch (err) { }
|
7 |
|
8 | process.on('message', function(msg) {
|
9 | var outputFile = msg.output,
|
10 | manglerOptions = msg.manglerOptions,
|
11 | compressorOptions = msg.compressorOptions,
|
12 | outputOptions = _.clone(msg.outputOptions || {}),
|
13 | data = msg.data,
|
14 | sourceMap = msg.sourceMap,
|
15 | warnings = [];
|
16 |
|
17 | try {
|
18 | var warnFunction;
|
19 | try {
|
20 | warnFunction = uglify.AST_Node.warn_function;
|
21 | uglify.AST_Node.warn_function = function(msg) {
|
22 | warnings.push(msg);
|
23 | };
|
24 | var ast = uglify.parse(data),
|
25 | compressor = uglify.Compressor(compressorOptions);
|
26 |
|
27 | if (sourceMap) {
|
28 | sourceMap = uglify.SourceMap({
|
29 | file: outputFile,
|
30 | orig: sourceMap
|
31 | });
|
32 | outputOptions.source_map = sourceMap;
|
33 | }
|
34 |
|
35 | ast.figure_out_scope();
|
36 | ast = ast.transform(compressor);
|
37 | ast.figure_out_scope();
|
38 | ast.compute_char_frequency();
|
39 | ast.mangle_names(manglerOptions);
|
40 | data = ast.print_to_string(outputOptions);
|
41 |
|
42 | process.send({
|
43 | data: {
|
44 | data: data,
|
45 | warnings: warnings,
|
46 | sourceMap: sourceMap && sourceMap.toString()
|
47 | }
|
48 | });
|
49 | } finally {
|
50 | uglify.AST_Node.warn_function = warnFunction;
|
51 | }
|
52 | } catch (err) {
|
53 | process.send({err: err.stack || err.msg || err.toString()});
|
54 | }
|
55 | });
|