rollup-plugin-terser-default

Rollup plugin to minify generated es bundle

Usage no npm install needed!

<script type="module">
  import rollupPluginTerserDefault from 'https://cdn.skypack.dev/rollup-plugin-terser-default';
</script>

README

rollup-plugin-terser-default Travis Build Status

rollup-plugin-terser modified for default export

Rollup plugin to minify generated es bundle. Uses terser under the hood.

Install

yarn add rollup-plugin-terser-default --dev
# Or with npm:
npm i rollup-plugin-terser-default --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-default";

rollup({
  input: "main.js",
  plugins: [terser()],
});

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 when format is esm or es
  • toplevel: true is set when format is 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-default";

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.

License

MIT © Bogdan Chadkin