rollup-plugin-terser
    Overview
    Documentation
    Tutorials
    Chat
    Insights
    Code
    Dependencies
    Contributors
    Jobs

rollup-plugin-terser

Rollup plugin to minify generated es bundle

5.1.1  •  Updated 9 months ago  •  by Bogdan Chadkin  •  MIT License

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

Install

yarn add rollup-plugin-terser --dev

Note: this package requires rollup@0.66 and higher (including rollup@1.0.0)

Usage

import { rollup } from "rollup";
import { terser } from "rollup-plugin-terser";

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

Why named export?

  1. Module is a namespace. Default export often leads to function/component per file dogma and makes code less maintainable.
  2. Interop with commonjs is broken in many cases. A ways to fight them are known.
  3. 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

options.sourcemap: boolean

Generates source maps and passes them to rollup. Defaults to true.

options.numWorkers: number

Amount of workers to spawn. Defaults to the number of CPUs minus 1.

options.include: Array<string | RegExp> | string | RegExp

options.exclude: Array<string | RegExp> | string | RegExp

Specifically include/exclude chunk files names (minimatch pattern, or array of minimatch patterns), By default all chunk files will be minify.

Examples

include/exclude

If you’d like that only some of the files will be minify, then you can filter by include and exclude to do this like so:

// 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' },
    { file: 'lib.esm.js', format: 'es' },
    { dir: '.', entryFileNames: 'lib-[format].js', format: 'iife'  }
  ],
  plugins: [
    terser({
      include: [/^.+\.min\.js$/, '*esm*'], 
      exclude: [ 'some*' ]
    })
  ]
};

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

Popularity

Maintenance

Development

Last ver 9 months ago
Created 2 years ago
Last commit 17 days ago
10 days between commits

Technology

Node version: null
8.2K unpacked

Compliance

MIT License
OSI Approved
0 vulnerabilities

Contributors

11 contributors
Bogdan Chadkin
Maintainer, 56 commits, 12 merges
Works at realadvisor
Tim Zech
2 commits, 2 PRs
Works at OrbisAG
yisraelx
2 commits, 2 PRs
Chris Reeves
1 commits, 1 PRs
Evan Shaw
1 commits, 1 PRs
Works at Vend
Tiger Oakes
1 commits, 1 PRs
Works at rollup

Tags

rollup
rollup-plugin
terser
minify
Openbase helps developers choose among and use millions of open-source packages, so they can build amazing products faster.
FacebookTwitterLinkedIn
© 2020 Devstore, Inc.