1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = BabelMinify;
|
7 |
|
8 | var _babelCore = require('babel-core');
|
9 |
|
10 | var _babelPluginTransformMangle = require('babel-plugin-transform-mangle');
|
11 |
|
12 | var _babelPluginTransformMangle2 = _interopRequireDefault(_babelPluginTransformMangle);
|
13 |
|
14 | var _babelPluginTransformEvaluate = require('babel-plugin-transform-evaluate');
|
15 |
|
16 | var _babelPluginTransformEvaluate2 = _interopRequireDefault(_babelPluginTransformEvaluate);
|
17 |
|
18 | var _babelPluginTransformConditionals = require('babel-plugin-transform-conditionals');
|
19 |
|
20 | var _babelPluginTransformConditionals2 = _interopRequireDefault(_babelPluginTransformConditionals);
|
21 |
|
22 | var _babelPluginTransformRemoveDebugger = require('babel-plugin-transform-remove-debugger');
|
23 |
|
24 | var _babelPluginTransformRemoveDebugger2 = _interopRequireDefault(_babelPluginTransformRemoveDebugger);
|
25 |
|
26 | var _babelPluginTransformRemoveConsole = require('babel-plugin-transform-remove-console');
|
27 |
|
28 | var _babelPluginTransformRemoveConsole2 = _interopRequireDefault(_babelPluginTransformRemoveConsole);
|
29 |
|
30 | var _babelPluginTransformDeadCodeElimination = require('babel-plugin-transform-dead-code-elimination');
|
31 |
|
32 | var _babelPluginTransformDeadCodeElimination2 = _interopRequireDefault(_babelPluginTransformDeadCodeElimination);
|
33 |
|
34 | var _babelPluginTransformMemberExpressionLiterals = require('babel-plugin-transform-member-expression-literals');
|
35 |
|
36 | var _babelPluginTransformMemberExpressionLiterals2 = _interopRequireDefault(_babelPluginTransformMemberExpressionLiterals);
|
37 |
|
38 | var _babelPluginTransformMergeSiblingVariables = require('babel-plugin-transform-merge-sibling-variables');
|
39 |
|
40 | var _babelPluginTransformMergeSiblingVariables2 = _interopRequireDefault(_babelPluginTransformMergeSiblingVariables);
|
41 |
|
42 | var _babelPluginTransformMinifyBooleans = require('babel-plugin-transform-minify-booleans');
|
43 |
|
44 | var _babelPluginTransformMinifyBooleans2 = _interopRequireDefault(_babelPluginTransformMinifyBooleans);
|
45 |
|
46 | var _babelPluginTransformPropertyLiterals = require('babel-plugin-transform-property-literals');
|
47 |
|
48 | var _babelPluginTransformPropertyLiterals2 = _interopRequireDefault(_babelPluginTransformPropertyLiterals);
|
49 |
|
50 | var _babelPluginTransformSimplifyComparisonOperators = require('babel-plugin-transform-simplify-comparison-operators');
|
51 |
|
52 | var _babelPluginTransformSimplifyComparisonOperators2 = _interopRequireDefault(_babelPluginTransformSimplifyComparisonOperators);
|
53 |
|
54 | var _babelPluginTransformUndefinedToVoid = require('babel-plugin-transform-undefined-to-void');
|
55 |
|
56 | var _babelPluginTransformUndefinedToVoid2 = _interopRequireDefault(_babelPluginTransformUndefinedToVoid);
|
57 |
|
58 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
59 |
|
60 |
|
61 |
|
62 |
|
63 | Error.stackTraceLimit = Infinity;
|
64 |
|
65 |
|
66 |
|
67 |
|
68 | function BabelMinify(inputCode) {
|
69 | var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
70 |
|
71 | var _ref$mangle = _ref.mangle;
|
72 | let mangle = _ref$mangle === undefined ? true : _ref$mangle;
|
73 | var _ref$mangle_globals = _ref.mangle_globals;
|
74 | let mangle_globals = _ref$mangle_globals === undefined ? false : _ref$mangle_globals;
|
75 | var _ref$dead_code = _ref.dead_code;
|
76 | let dead_code = _ref$dead_code === undefined ? false : _ref$dead_code;
|
77 | var _ref$conditionals = _ref.conditionals;
|
78 | let conditionals = _ref$conditionals === undefined ? true : _ref$conditionals;
|
79 | var _ref$evaluate = _ref.evaluate;
|
80 | let evaluate = _ref$evaluate === undefined ? true : _ref$evaluate;
|
81 | var _ref$drop_debugger = _ref.drop_debugger;
|
82 | let
|
83 | drop_debugger = _ref$drop_debugger === undefined ? false : _ref$drop_debugger;
|
84 | var _ref$drop_console = _ref.drop_console;
|
85 | let drop_console = _ref$drop_console === undefined ? false : _ref$drop_console;
|
86 | var _ref$properties = _ref.properties;
|
87 | let properties = _ref$properties === undefined ? true : _ref$properties;
|
88 | var _ref$join_vars = _ref.join_vars;
|
89 | let join_vars = _ref$join_vars === undefined ? true : _ref$join_vars;
|
90 | var _ref$booleans = _ref.booleans;
|
91 | let booleans = _ref$booleans === undefined ? true : _ref$booleans;
|
92 | var _ref$unsafe = _ref.unsafe;
|
93 | let unsafe = _ref$unsafe === undefined ? true : _ref$unsafe;
|
94 | var _ref$keep_fnames = _ref.keep_fnames;
|
95 | let keep_fnames = _ref$keep_fnames === undefined ? false : _ref$keep_fnames;
|
96 | var _ref$npasses = _ref.npasses;
|
97 | let
|
98 |
|
99 |
|
100 | npasses = _ref$npasses === undefined ? 1 : _ref$npasses;
|
101 | var _ref$babelrc = _ref.babelrc;
|
102 | let
|
103 |
|
104 |
|
105 | babelrc = _ref$babelrc === undefined ? false : _ref$babelrc;
|
106 | var _ref$plugins = _ref.plugins;
|
107 | let
|
108 |
|
109 |
|
110 | plugins = _ref$plugins === undefined ? [] : _ref$plugins;
|
111 | var _ref$presets = _ref.presets;
|
112 | let
|
113 |
|
114 |
|
115 | presets = _ref$presets === undefined ? [] : _ref$presets;
|
116 | var _ref$minify = _ref.minify;
|
117 | let
|
118 |
|
119 |
|
120 | minify = _ref$minify === undefined ? true : _ref$minify;
|
121 |
|
122 |
|
123 | if (typeof inputCode !== 'string' && minify) throw new Error('Invalid Input');
|
124 |
|
125 | |
126 |
|
127 |
|
128 |
|
129 |
|
130 |
|
131 |
|
132 | let minifyPlugins = [];
|
133 |
|
134 | |
135 |
|
136 |
|
137 |
|
138 | let passes = [];
|
139 |
|
140 | evaluate && minifyPlugins.push(_babelPluginTransformEvaluate2.default);
|
141 | drop_debugger && minifyPlugins.push(_babelPluginTransformRemoveDebugger2.default);
|
142 | drop_console && minifyPlugins.push(_babelPluginTransformRemoveConsole2.default);
|
143 | properties && minifyPlugins.push(_babelPluginTransformMemberExpressionLiterals2.default);
|
144 | properties && minifyPlugins.push(_babelPluginTransformPropertyLiterals2.default);
|
145 | join_vars && minifyPlugins.push(_babelPluginTransformMergeSiblingVariables2.default);
|
146 | booleans && minifyPlugins.push(_babelPluginTransformMinifyBooleans2.default);
|
147 | unsafe && minifyPlugins.push(_babelPluginTransformUndefinedToVoid2.default);
|
148 | unsafe && minifyPlugins.push(_babelPluginTransformSimplifyComparisonOperators2.default);
|
149 |
|
150 | |
151 |
|
152 |
|
153 | minifyPlugins = minifyPlugins.concat(plugins);
|
154 |
|
155 | |
156 |
|
157 |
|
158 |
|
159 |
|
160 | if (dead_code) {
|
161 | passes.push({ plugins: [_babelPluginTransformDeadCodeElimination2.default] });
|
162 | }
|
163 | if (conditionals) {
|
164 | passes.push({ plugins: [_babelPluginTransformConditionals2.default] });
|
165 | }
|
166 |
|
167 | |
168 |
|
169 |
|
170 | passes = passes.concat(presets);
|
171 |
|
172 | |
173 |
|
174 |
|
175 |
|
176 |
|
177 | if (mangle) {
|
178 | passes.push({
|
179 | plugins: [[_babelPluginTransformMangle2.default, {
|
180 | keep_fnames: keep_fnames,
|
181 | mangle_globals: mangle_globals
|
182 | }]]
|
183 | });
|
184 | }
|
185 |
|
186 |
|
187 |
|
188 | if (!minify) return { plugins: minifyPlugins, presets: passes };
|
189 |
|
190 | let result = { code: inputCode };
|
191 |
|
192 | while (npasses-- > 0) {
|
193 | result = (0, _babelCore.transform)(result.code, {
|
194 | babelrc: babelrc,
|
195 | comments: false,
|
196 | compact: true,
|
197 | minified: true,
|
198 | passPerPreset: true,
|
199 | presets: passes,
|
200 | plugins: minifyPlugins
|
201 | });
|
202 | }
|
203 |
|
204 | return result.code;
|
205 | }
|
206 | module.exports = exports['default']; |
\ | No newline at end of file |