rollup-plugin-babel-minify
Version:
Simple rollup plugin for minifying code using babel-minify.
4 lines (3 loc) • 1.85 kB
JavaScript
/*! rollup-plugin-babel-minify v10.0.0 | (c) 2020 Comandeer | MIT license (see LICENSE) */
import minifyPreset from"babel-preset-minify";import bannerPlugin,{getCommentContent}from"@comandeer/babel-plugin-banner";import importPlugin from"@babel/plugin-syntax-dynamic-import";import{transform}from"@babel/core";import{decode,encode}from"sourcemap-codec";function addNewLine(a,b,c){b=Object.assign({},b),a=a.replace(c,`${c}\n`);const d=decode(b.mappings);let e=c.match(/\n/g);e=e?e.length+1:1;let f=a.replace(`${c}\n`,"").match(/^(\s)+/g);if(f=f?f.length:0,d.unshift([]),Array.isArray(d[e])&&d[e].length){const a=d[e][0][0]-f;d[e].forEach(b=>{b[0]-=a})}return b.mappings=encode(d),{code:a,map:b}}function filterMinifyOptions(a){const b=["banner","bannerNewLine","sourceMap","comments","plugins"];return Object.keys(a).reduce((c,d)=>(-1===b.indexOf(d)&&(c[d]=a[d]),c),{})}function isString(a){return"string"==typeof a}function isFn(a){return"function"==typeof a}function isFnOrString(a){return isString(a)||isFn(a)}function minify(a={}){let b;return{name:"babel-minify",outputOptions(a){const c=Object.assign({},a);return b=c.banner,delete c.banner,c},renderChunk(c){const d=filterMinifyOptions(a),e={presets:[[minifyPreset,d]],sourceMaps:"undefined"==typeof a.sourceMap||!!a.sourceMap,comments:"undefined"==typeof a.comments||!!a.comments,plugins:Array.isArray(a.plugins)?a.plugins.concat([importPlugin]):[importPlugin]};let f;if(isFnOrString(a.banner)||isFnOrString(b)){f=a.banner||b,f=isFn(f)?f():f;const c=getCommentContent(f);let d=!1;e.plugins=e.plugins.concat([[bannerPlugin,{banner:f}]]),e.comments||(e.shouldPrintComment=a=>!(d||a!==c)&&(d=!0,!0))}let{code:g,map:h}=transform(c,e);return a.bannerNewLine&&({code:g,map:h}=addNewLine(g,h,f)),{code:g,map:h}}}}export default minify;
//# sourceMappingURL=rollup-plugin-babel-minify.es2015.js.map