UNPKG

1.31 kBJavaScriptView Raw
1"use strict";
2
3const UglifyJS = require('uglify-js');
4const UglifyJSHarmony = require('uglify-js-harmony');
5const process = require('process');
6
7module.exports = function(code, settings) {
8 code = code.trim();
9 if (!code) {
10 return code;
11 }
12
13 let compressSettings = {
14 sequences: true,
15 properties: true,
16 dead_code: true,
17 drop_debugger: !settings.debug,
18 unsafe: true,
19 conditionals: true,
20 comparisons: true,
21 evaluate: true,
22 booleans: true,
23 loops: true,
24 unused: true,
25 hoist_funs: true,
26 hoist_vars: false,
27 if_return: true,
28 join_vars: true,
29 cascade: true,
30 collapse_vars: true,
31 reduce_vars: true,
32 warnings: true,
33 negate_iife: true,
34 drop_console: !settings.debug,
35 keep_fargs: true,
36 keep_fnames: false,
37 passes: settings.passes || 1,
38 };
39 if (settings.harmony) {
40 // Delete arguments that harmony version doesn't support
41 delete compressSettings.collapse_vars;
42 delete compressSettings.reduce_vars;
43 delete compressSettings.passes;
44 }
45
46 try {
47 return (settings.harmony ? UglifyJSHarmony : UglifyJS).minify(code, {
48 warnings: true,
49 fromString: true,
50 mangle: {
51 eval: true,
52 },
53 compress: compressSettings,
54 }).code;
55 } catch (e) {
56 // Use console.error as UglifyJS throws plain objects, not Error instances
57 console.error(e);
58 process.exit(1);
59 }
60};
\No newline at end of file