1 | "use strict";
|
2 |
|
3 | const htmlMinifier = require('html-minifier-terser');
|
4 |
|
5 | const defaultMinimizerOptions = {
|
6 | caseSensitive: true,
|
7 |
|
8 | collapseWhitespace: true,
|
9 | conservativeCollapse: true,
|
10 | keepClosingSlash: true,
|
11 |
|
12 | minifyCSS: true,
|
13 | minifyJS: true,
|
14 |
|
15 |
|
16 | removeComments: true,
|
17 |
|
18 |
|
19 | removeScriptTypeAttributes: true,
|
20 | removeStyleLinkTypeAttributes: true
|
21 |
|
22 | };
|
23 |
|
24 | const minify = async options => {
|
25 | const {
|
26 | assetName,
|
27 | input,
|
28 | minimizerOptions,
|
29 | minify: minifyFn
|
30 | } = options;
|
31 |
|
32 | if (minifyFn) {
|
33 | const result = await minifyFn({
|
34 | [assetName]: input
|
35 | }, minimizerOptions);
|
36 | return {
|
37 | html: result
|
38 | };
|
39 | }
|
40 |
|
41 | const result = await htmlMinifier.minify(input, { ...defaultMinimizerOptions,
|
42 | ...minimizerOptions
|
43 | });
|
44 | return {
|
45 | html: result
|
46 | };
|
47 | };
|
48 |
|
49 | async function transform(options) {
|
50 |
|
51 |
|
52 |
|
53 | options = new Function('exports', 'require', 'module', '__filename', '__dirname', `'use strict'\nreturn ${options}`)(exports, require, module, __filename, __dirname);
|
54 | return minify(options);
|
55 | }
|
56 |
|
57 | module.exports.minify = minify;
|
58 | module.exports.transform = transform; |
\ | No newline at end of file |