UNPKG

rollup-plugin-babel-minify

Version:

Simple rollup plugin for minifying code using babel-minify.

4 lines (3 loc) 2.06 kB
/*! rollup-plugin-babel-minify v10.0.0 | (c) 2020 Comandeer | MIT license (see LICENSE) */ 'use strict';function _interopDefault(a){return a&&"object"==typeof a&&"default"in a?a["default"]:a}var minifyPreset=_interopDefault(require("babel-preset-minify")),bannerPlugin=require("@comandeer/babel-plugin-banner"),bannerPlugin__default=_interopDefault(bannerPlugin),importPlugin=_interopDefault(require("@babel/plugin-syntax-dynamic-import")),core=require("@babel/core"),sourcemapCodec=require("sourcemap-codec");function addNewLine(a,b,c){b=Object.assign({},b),a=a.replace(c,`${c}\n`);const d=sourcemapCodec.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=sourcemapCodec.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=bannerPlugin.getCommentContent(f);let d=!1;e.plugins=e.plugins.concat([[bannerPlugin__default,{banner:f}]]),e.comments||(e.shouldPrintComment=a=>!(d||a!==c)&&(d=!0,!0))}let{code:g,map:h}=core.transform(c,e);return a.bannerNewLine&&({code:g,map:h}=addNewLine(g,h,f)),{code:g,map:h}}}}module.exports=minify; //# sourceMappingURL=rollup-plugin-babel-minify.js.map