UNPKG

1.47 kBJavaScriptView Raw
1var _ = require('underscore'),
2 uglify;
3
4try {
5 uglify = require('uglify-js');
6} catch (err) { /* NOP */ }
7
8process.on('message', function(msg) {
9 var outputFile = msg.output,
10 manglerOptions = msg.manglerOptions,
11 compressorOptions = msg.compressorOptions,
12 outputOptions = _.clone(msg.outputOptions || {}), // Clone to play it safe with source map
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});