UNPKG

1.94 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
7const _require = require('terser'),
8 minify = _require.minify;
9
10const SourceMap = require('../SourceMap');
11
12module.exports =
13/*#__PURE__*/
14function () {
15 var _ref = (0, _asyncToGenerator2.default)(function* (asset) {
16 yield asset.parseIfNeeded(); // Convert AST into JS
17
18 let source = (yield asset.generate())[0].value;
19 let customConfig = yield asset.getConfig(['.uglifyrc', '.terserrc']);
20 let options = {
21 warnings: true,
22 safari10: true,
23 mangle: {
24 toplevel: !asset.options.scopeHoist
25 }
26 };
27 let sourceMap;
28
29 if (asset.options.sourceMaps) {
30 sourceMap = new SourceMap();
31 options.output = {
32 source_map: {
33 add(source, gen_line, gen_col, orig_line, orig_col, name) {
34 sourceMap.addMapping({
35 source,
36 name,
37 original: {
38 line: orig_line,
39 column: orig_col
40 },
41 generated: {
42 line: gen_line,
43 column: gen_col
44 }
45 });
46 }
47
48 }
49 };
50 }
51
52 if (customConfig) {
53 options = Object.assign(options, customConfig);
54 }
55
56 let result = minify(source, options);
57
58 if (result.error) {
59 throw result.error;
60 }
61
62 if (sourceMap) {
63 if (asset.sourceMap) {
64 asset.sourceMap = yield new SourceMap().extendSourceMap(asset.sourceMap, sourceMap);
65 } else {
66 asset.sourceMap = sourceMap;
67 }
68 } // babel-generator did our code generation for us, so remove the old AST
69
70
71 asset.ast = null;
72 asset.outputCode = result.code;
73 asset.isAstDirty = false;
74 });
75
76 return function (_x) {
77 return _ref.apply(this, arguments);
78 };
79}();
\No newline at end of file