idraw/scripts/util/clean-plugin.js
2021-07-23 15:41:20 +08:00

39 lines
No EOL
1 KiB
JavaScript

const extname = require("path").extname;
const { createFilter } = require('@rollup/pluginutils');
const MagicString = require('magic-string');
module.exports = function cleanPlugin(options = {}) {
const filter = createFilter(options.include, options.exclude);
const sourcemap = options.sourcemap === true;
return {
name: 'clean-plugin',
transform (code, id) {
if (!filter(id) || !(['.js', '.ts'].indexOf(extname(id)) >= 0)) return;
let codeStr = `${code}`;
const magic = new MagicString(codeStr);
if (sourcemap === true) {
codeStr = codeStr.replace(/\/\*\!([^\\]+)\*\//gi, function(match, offset) {
const start = offset;
const end = offset + match.length;
magic.overwrite(start, end, '');
return '';
});
}
const resultCode = magic.toString();
let resultMap = false;
if (sourcemap === true) {
resultMap = magic.generateMap({
hires: true,
});
}
return {
code: resultCode,
map: resultMap,
};
}
};
}