Skip to content
Karma preprocessor to bundle ES2015 modules using Rollup.
Branch: master
Clone or download
Pull request Compare This branch is even with jlmakes:master.
Latest commit 6411b1e Feb 6, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
test
.eslintrc.json
.gitignore
.travis.yml
CHANGELOG.md
LICENSE.md
README.md
karma.conf.js
package-lock.json
package.json

README.md


Karma + Rollup

Karma preprocessor to bundle ES2015 modules using Rollup.

Build Status Dependency Status Downloads Version MIT License


Features

  • Rebundles your files when watched dependencies change
  • Caches bundle output for improved performance
  • Maintained with heart by @jlmakes

Installation

npm install karma-rollup-preprocessor

Configuration

All the options detailed in the Rollup Documentation can be passed to rollupPreprocessor.

Standard

Below is a well-founded recommendation using the Bublé ES2015 transpiler:

// karma.conf.js
module.exports = function(config) {
  config.set({
    files: [
      /**
       * Make sure to disable Karma’s file watcher
       * because the preprocessor will use its own.
       */
      { pattern: "test/**/*.spec.js", watched: false }
    ],

    preprocessors: {
      "test/**/*.spec.js": ["rollup"]
    },

    rollupPreprocessor: {
      /**
       * This is just a normal Rollup config object,
       * except that `input` is handled for you.
       */
      plugins: [require("rollup-plugin-buble")()],
      output: {
        format: "iife", // Helps prevent naming collisions.
        name: "<your_project>", // Required for 'iife' format.
        sourcemap: "inline" // Sensible for testing.
      }
    }
  });
};

Configured Preprocessors

Below shows an example where configured preprocessors can be very helpful:

// karma.conf.js
module.exports = function(config) {
  config.set({
    files: [{ pattern: "test/**/*.spec.js", watched: false }],

    preprocessors: {
      "test/buble/**/*.spec.js": ["rollup"],
      "test/babel/**/*.spec.js": ["rollupBabel"]
    },

    rollupPreprocessor: {
      plugins: [require("rollup-plugin-buble")()],
      output: {
        format: "iife",
        name: "<your_project>",
        sourcemap: "inline"
      }
    },

    customPreprocessors: {
      /**
       * Clones the base preprocessor, but overwrites
       * its options with those defined below...
       */
      rollupBabel: {
        base: "rollup",
        options: {
          // In this case, to use a different transpiler:
          plugins: [require("rollup-plugin-babel")()]
        }
      }
    }
  });
};

Support

Supports all Rollup plug-ins, and works on Node 8 and up. Happy bundling!

You can’t perform that action at this time.