Leverage Closure Compiler to minify and optimize JavaScript with Rollup.
Generally Closure Compiler will produce superior minification than other projects, but historically has been more difficult to use. The goal of this plugin is to reduce this friction.
npm install @liquid-js/rollup-plugin-closure-compiler
https://liquid-js.github.io/rollup-plugin-closure-compiler/
Invoke Closure Compiler from your Rollup configuration.
// rollup.config.js
import compiler from '@liquid-js/rollup-plugin-closure-compiler'
export default {
input: 'main.js',
output: {
file: 'bundle.js',
format: 'iife'
},
plugins: [
compiler()
]
}
If you would like to provide additional flags and options to Closure Compiler, pass them via key-value pairs.
// rollup.config.js
import compiler from '@liquid-js/rollup-plugin-closure-compiler'
export default {
input: 'main.js',
output: {
file: 'bundle.js',
format: 'iife'
},
plugins: [
compiler({
formatting: 'PRETTY_PRINT'
})
]
}
This plugin will modify the enable the assume_function_wrapper
output option for Closure Compiler when es
format is specifed to Rollup. Note: This is overrideable via passed flags and options.
// rollup.config.js
import compiler from '@liquid-js/rollup-plugin-closure-compiler'
export default {
input: 'main.js',
output: {
file: 'bundle.js',
format: 'es'
},
plugins: [
compiler()
]
}
If your Rollup configuration outputs an IIFE format bundle with a specified name, this plugin will add an extern to ensure the name does not get mangled. Note: This is overrideable via passed flags and options.
// rollup.config.js
import compiler from '@liquid-js/rollup-plugin-closure-compiler'
export default {
input: 'main.js',
output: {
file: 'bundle.js',
format: 'iife',
name: 'MyAwesomeThing'
},
plugins: [
compiler()
]
}