Nebulous Pumpkin Moons

    rollup-plugin-terser
    TypeScript icon, indicating that this package has built-in type declarations

    7.0.2 • Public • Published

    rollup-plugin-terser Travis Build Status

    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?

    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 or hard to maintain.
    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

    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";
     
    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

    Install

    npm i rollup-plugin-terser

    DownloadsWeekly Downloads

    3,161,398

    Version

    7.0.2

    License

    MIT

    Unpacked Size

    8.46 kB

    Total Files

    8

    Last publish

    Collaborators

    • trysound