|  | 3 years ago | |
|---|---|---|
| .. | ||
| LICENSE | 3 years ago | |
| README.md | 3 years ago | |
| package.json | 3 years ago | |
| rollup-plugin-terser.d.ts | 3 years ago | |
| rollup-plugin-terser.js | 3 years ago | |
| rollup-plugin-terser.mjs | 3 years ago | |
| transform.js | 3 years ago | |
		
			
				
				README.md
			
		
		
			
			
		
	
	rollup-plugin-terser 
Rollup plugin to minify generated es bundle. Uses terser under the hood.
Install
yarn add rollup-plugin-terser --dev
# Or with npm:
npm i rollup-plugin-terser --save-dev
Note: this package requires rollup@0.66 and higher (including rollup@2.0.0)
Usage
import { rollup } from "rollup";
import { terser } from "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: trueis set when- formatis- esmor- es
- toplevel: trueis set when- formatis- cjs
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 "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({
  output: {
    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({
  output: {
    comments: "all",
  },
});
See Terser documentation for further reference.
License
MIT © Bogdan Chadkin