1 | "use strict";
|
2 |
|
3 | const UglifyJS = require('uglify-js');
|
4 | const UglifyJSHarmony = require('uglify-js-harmony');
|
5 | const process = require('process');
|
6 |
|
7 | module.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 |
|
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 |
|
57 | console.error(e);
|
58 | process.exit(1);
|
59 | }
|
60 | }; |
\ | No newline at end of file |