49 lines
958 B
JavaScript
49 lines
958 B
JavaScript
"use strict";
|
|
|
|
const terser = require("terser");
|
|
async function minifier(options) {
|
|
const result = await minify(options);
|
|
if (!options.map || result.map == null) {
|
|
return {
|
|
code: result.code,
|
|
};
|
|
}
|
|
const map = JSON.parse(result.map);
|
|
return {
|
|
code: result.code,
|
|
map: {
|
|
...map,
|
|
sources: [options.filename],
|
|
},
|
|
};
|
|
}
|
|
async function minify({ code, map, reserved, config }) {
|
|
const options = {
|
|
...config,
|
|
output: {
|
|
...(config.output ?? {}),
|
|
},
|
|
mangle:
|
|
config.mangle === false
|
|
? false
|
|
: {
|
|
...config.mangle,
|
|
reserved,
|
|
},
|
|
sourceMap: map
|
|
? config.sourceMap === false
|
|
? false
|
|
: {
|
|
...config.sourceMap,
|
|
content: map,
|
|
}
|
|
: false,
|
|
};
|
|
const result = await terser.minify(code, options);
|
|
return {
|
|
code: result.code,
|
|
map: result.map,
|
|
};
|
|
}
|
|
module.exports = minifier;
|