UNPKG

zarbis

Version:

Configuration-less build tool

39 lines 1.58 kB
function encodeJS(codeSource) { const tokens = []; const result = `eval(((la,ch)=>la.match(/[a-zA-Zа-яА-Я0-9]+|[^a-zA-Zа-яА-Я0-9]+/g).map(t=>/[a-z0-9]+/.test(t)?ch[parseInt(t,36)]:t).join(''))('` + codeSource.replace(/\\/g, '\\\\').replace(/'/g, '\\\'').replace(/\n/g, '\\n').replace(/[a-zA-Zа-яА-Я0-9]+/g, e => { if (tokens.indexOf(e) === -1) { tokens.push(e); } return tokens.indexOf(e).toString(36); }) + `','${tokens.join(',')}'.split(',')))`; return result; } const PLUGIN_NAME = 'PackerPlugin'; export default class PackerPlugin { apply(compiler) { compiler.hooks.emit.tapAsync(PLUGIN_NAME, (compilation, callback) => { compilation.chunks.forEach((chunk) => { chunk.files.forEach((filename) => { if (!filename.endsWith('js') || !compilation.assets[filename]) { return; } const source = compilation.assets[filename].source(); const code = encodeJS(source); compilation.assets[filename] = { source() { return code; }, map() { return null; }, size() { return code.length; } }; }); }); callback(); }); } } //# sourceMappingURL=PackerPlugin.js.map