UNPKG

rollup-plugin-closure-compile

Version:

Rollup plugin that uses the up-to-date JS version of Closure Compiler to minify your code. Works with sourcemaps

56 lines (50 loc) 1.57 kB
import logger from './log' const ClosureCompiler = require('google-closure-compiler').jsCompiler export default function closureIt (flags) { return { name: 'closure-compile', renderChunk: function (code, ChunkInfo) { // console.log(code) // console.log(JSON.stringify(ChunkInfo)) var newFlags = { processCommonJsModules: true, path: ChunkInfo.name, sourceMap: ChunkInfo.map, // The original sourcemap fileName: ChunkInfo.name, level: 'SIMPLE' } if (flags && flags === Object(flags)) { for (var prop in flags) { if (flags.hasOwnProperty(prop)) { newFlags[prop] = flags[prop] } } } newFlags.src = code var newCompiler = new ClosureCompiler({ compilation_level: newFlags.compilationLevel || newFlags.compilation_level || newFlags.level }) var compilerProcess = newCompiler.run([newFlags], function ( exitCode, stdOut, stdErr ) {}) if (logger(compilerProcess)) { throw new Error( 'Compilation error - ' + compilerProcess.errors.length + ' error' + (compilerProcess.errors.length === 1 ? '' : 's') ) } return { code: compilerProcess.compiledCode, map: compilerProcess.sourceMap } } } } // Eventually I might add a babel plugin-builder utility as shown on the rollup-plugin-babel page