rollup-plugin-babel-minify
Version:
Simple rollup plugin for minifying code using babel-minify.
4 lines (3 loc) • 1.79 kB
JavaScript
/*! rollup-plugin-babel-minify v7.0.0 | (c) 2019 Comandeer | MIT license (see LICENSE) */
import{encode,decode}from"sourcemap-codec";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";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={}){return{name:"babel-minify",renderChunk(b,c,{banner:d}){const e=filterMinifyOptions(a),f={presets:[[minifyPreset,e]],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 g;if(isFnOrString(a.banner)||isFnOrString(d)){g=a.banner||d,g=isFn(g)?g():g;const b=getCommentContent(g);let c=!1;f.plugins=f.plugins.concat([[bannerPlugin,{banner:g}]]),f.comments||(f.shouldPrintComment=a=>!(c||a!==b)&&(c=!0,!0))}let h=transform(b,f),i=h.code,j=h.map;if(a.bannerNewLine){var k=addNewLine(i,j,g);i=k.code,j=k.map}return{code:i,map:j}}}}export default minify;
//# sourceMappingURL=rollup-plugin-babel-minify.es2015.js.map