@el3um4s/rollup-plugin-terser
v1.0.2
Published
Rollup plugin to minify generated es bundle
Downloads
275
Maintainers
Readme
Rollup Plugin Terser
Rollup plugin to minify generated bundle (forked from Bogdan Chadkin repository)
Rollup plugin to minify generated es bundle. Uses terser under the hood.
Install
npm i @el3um4s/rollup-plugin-terser --save-dev
Note: this package requires [email protected] and higher (including [email protected])
Usage
import { rollup } from "rollup";
import { terser } from "@el3um4s/rollup-plugin-terser";
rollup({
input: "main.js",
plugins: [terser()],
});
Why named export?
- Module is a namespace. Default export often leads to function/component per file dogma and makes code less maintainable.
- Interop with commonjs is broken in many cases or hard to maintain.
- Show me any good language with default exports. It's historical javascriptism.
Options
⚠️ Caveat: any function used in options object cannot rely on its surrounding scope, since it is executed in an isolated context.
terser(options);
options
- terser API options
Note: some terser options are set by the plugin automatically:
module: true
is set whenformat
isesm
ores
toplevel: true
is set whenformat
iscjs
options.numWorkers: number
Amount of workers to spawn. Defaults to the number of CPUs minus 1.
Examples
Using as output plugin
// rollup.config.js
import { terser } from "@el3um4s/rollup-plugin-terser";
export default {
input: "index.js",
output: [
{ file: "lib.js", format: "cjs" },
{ file: "lib.min.js", format: "cjs", plugins: [terser()] },
{ file: "lib.esm.js", format: "esm" },
],
};
Comments
If you'd like to preserve comments (for licensing for example), then you can specify a function to do this like so:
terser({
format: {
comments: function (node, comment) {
var text = comment.value;
var type = comment.type;
if (type == "comment2") {
// multiline comment
return /@preserve|@license|@cc_on/i.test(text);
}
},
},
});
Alternatively, you can also choose to keep all comments (e.g. if a licensing header has already been prepended by a previous rollup plugin):
terser({
format: {
comments: "all",
},
});
See Terser documentation for further reference.